From a2d7a353d8b1e01153e0435ab6f235ca9e7c21ab Mon Sep 17 00:00:00 2001
From: lai <10633968+laiyujun1@user.noreply.gitee.com>
Date: Tue, 12 Aug 2025 14:15:27 +0800
Subject: [PATCH] init-version-3.27
---
.clang-format | 2 +
.gitattributes | 2 +
.gitignore | 126 +
CMakeLists.txt | 53 +
CONTRIBUTING.md | 19 +
LICENSE | 674 +
README.md | 2 +-
config/custom-gnb.yaml | 23 +
config/custom-ue.yaml | 83 +
config/free5gc-gnb.yaml | 23 +
config/free5gc-ue.yaml | 83 +
config/open5gs-gnb.yaml | 22 +
config/open5gs-ue.yaml | 81 +
src/asn/asn1c/ANY.c | 450 +
src/asn/asn1c/ANY.h | 65 +
src/asn/asn1c/BIT_STRING.c | 656 +
src/asn/asn1c/BIT_STRING.h | 48 +
src/asn/asn1c/BOOLEAN.c | 492 +
src/asn/asn1c/BOOLEAN.h | 45 +
src/asn/asn1c/CMakeLists.txt | 7 +
src/asn/asn1c/INTEGER.c | 1723 +
src/asn/asn1c/INTEGER.h | 108 +
src/asn/asn1c/Makefile.am.libasncodec | 2231 +
src/asn/asn1c/NULL.c | 299 +
src/asn/asn1c/NULL.h | 45 +
src/asn/asn1c/NativeEnumerated.c | 367 +
src/asn/asn1c/NativeEnumerated.h | 45 +
src/asn/asn1c/NativeInteger.c | 550 +
src/asn/asn1c/NativeInteger.h | 46 +
src/asn/asn1c/OBJECT_IDENTIFIER.c | 647 +
src/asn/asn1c/OBJECT_IDENTIFIER.h | 156 +
src/asn/asn1c/OCTET_STRING.c | 2409 +
src/asn/asn1c/OCTET_STRING.h | 102 +
src/asn/asn1c/OPEN_TYPE.c | 509 +
src/asn/asn1c/OPEN_TYPE.h | 77 +
src/asn/asn1c/PrintableString.c | 130 +
src/asn/asn1c/PrintableString.h | 37 +
src/asn/asn1c/UTF8String.c | 294 +
src/asn/asn1c/UTF8String.h | 63 +
src/asn/asn1c/VisibleString.c | 99 +
src/asn/asn1c/VisibleString.h | 38 +
src/asn/asn1c/asn_SEQUENCE_OF.c | 41 +
src/asn/asn1c/asn_SEQUENCE_OF.h | 52 +
src/asn/asn1c/asn_SET_OF.c | 88 +
src/asn/asn1c/asn_SET_OF.h | 72 +
src/asn/asn1c/asn_application.c | 481 +
src/asn/asn1c/asn_application.h | 171 +
src/asn/asn1c/asn_bit_data.c | 333 +
src/asn/asn1c/asn_bit_data.h | 83 +
src/asn/asn1c/asn_codecs.h | 108 +
src/asn/asn1c/asn_codecs_prim.c | 317 +
src/asn/asn1c/asn_codecs_prim.h | 51 +
src/asn/asn1c/asn_internal.c | 48 +
src/asn/asn1c/asn_internal.h | 151 +
src/asn/asn1c/asn_ioc.h | 51 +
src/asn/asn1c/asn_random_fill.c | 56 +
src/asn/asn1c/asn_random_fill.h | 51 +
src/asn/asn1c/asn_system.h | 150 +
src/asn/asn1c/ber_decoder.c | 283 +
src/asn/asn1c/ber_decoder.h | 66 +
src/asn/asn1c/ber_tlv_length.c | 168 +
src/asn/asn1c/ber_tlv_length.h | 50 +
src/asn/asn1c/ber_tlv_tag.c | 144 +
src/asn/asn1c/ber_tlv_tag.h | 60 +
src/asn/asn1c/constr_CHOICE.c | 1509 +
src/asn/asn1c/constr_CHOICE.h | 80 +
src/asn/asn1c/constr_SEQUENCE.c | 2059 +
src/asn/asn1c/constr_SEQUENCE.h | 68 +
src/asn/asn1c/constr_SEQUENCE_OF.c | 358 +
src/asn/asn1c/constr_SEQUENCE_OF.h | 41 +
src/asn/asn1c/constr_SET_OF.c | 1441 +
src/asn/asn1c/constr_SET_OF.h | 49 +
src/asn/asn1c/constr_TYPE.c | 80 +
src/asn/asn1c/constr_TYPE.h | 262 +
src/asn/asn1c/constraints.c | 93 +
src/asn/asn1c/constraints.h | 62 +
src/asn/asn1c/der_encoder.c | 194 +
src/asn/asn1c/der_encoder.h | 68 +
src/asn/asn1c/per_decoder.c | 185 +
src/asn/asn1c/per_decoder.h | 82 +
src/asn/asn1c/per_encoder.c | 265 +
src/asn/asn1c/per_encoder.h | 93 +
src/asn/asn1c/per_opentype.c | 533 +
src/asn/asn1c/per_opentype.h | 44 +
src/asn/asn1c/per_support.c | 489 +
src/asn/asn1c/per_support.h | 127 +
src/asn/asn1c/xer_decoder.c | 369 +
src/asn/asn1c/xer_decoder.h | 106 +
src/asn/asn1c/xer_encoder.c | 237 +
src/asn/asn1c/xer_encoder.h | 83 +
src/asn/asn1c/xer_support.c | 227 +
src/asn/asn1c/xer_support.h | 55 +
.../ASN_NGAP_AMF-TNLAssociationSetupItem.c | 63 +
.../ASN_NGAP_AMF-TNLAssociationSetupItem.h | 48 +
.../ASN_NGAP_AMF-TNLAssociationSetupList.c | 50 +
.../ASN_NGAP_AMF-TNLAssociationSetupList.h | 44 +
.../ASN_NGAP_AMF-TNLAssociationToAddItem.c | 83 +
.../ASN_NGAP_AMF-TNLAssociationToAddItem.h | 52 +
.../ASN_NGAP_AMF-TNLAssociationToAddList.c | 50 +
.../ASN_NGAP_AMF-TNLAssociationToAddList.h | 44 +
.../ASN_NGAP_AMF-TNLAssociationToRemoveItem.c | 63 +
.../ASN_NGAP_AMF-TNLAssociationToRemoveItem.h | 48 +
.../ASN_NGAP_AMF-TNLAssociationToRemoveList.c | 50 +
.../ASN_NGAP_AMF-TNLAssociationToRemoveList.h | 44 +
.../ASN_NGAP_AMF-TNLAssociationToUpdateItem.c | 83 +
.../ASN_NGAP_AMF-TNLAssociationToUpdateItem.h | 52 +
.../ASN_NGAP_AMF-TNLAssociationToUpdateList.c | 50 +
.../ASN_NGAP_AMF-TNLAssociationToUpdateList.h | 44 +
src/asn/ngap/ASN_NGAP_AMF-UE-NGAP-ID.c | 67 +
src/asn/ngap/ASN_NGAP_AMF-UE-NGAP-ID.h | 44 +
.../ngap/ASN_NGAP_AMFCPRelocationIndication.c | 50 +
.../ngap/ASN_NGAP_AMFCPRelocationIndication.h | 44 +
.../ngap/ASN_NGAP_AMFConfigurationUpdate.c | 50 +
.../ngap/ASN_NGAP_AMFConfigurationUpdate.h | 44 +
...N_NGAP_AMFConfigurationUpdateAcknowledge.c | 50 +
...N_NGAP_AMFConfigurationUpdateAcknowledge.h | 44 +
.../ASN_NGAP_AMFConfigurationUpdateFailure.c | 50 +
.../ASN_NGAP_AMFConfigurationUpdateFailure.h | 44 +
src/asn/ngap/ASN_NGAP_AMFName.c | 106 +
src/asn/ngap/ASN_NGAP_AMFName.h | 44 +
src/asn/ngap/ASN_NGAP_AMFNameUTF8String.c | 68 +
src/asn/ngap/ASN_NGAP_AMFNameUTF8String.h | 44 +
src/asn/ngap/ASN_NGAP_AMFNameVisibleString.c | 76 +
src/asn/ngap/ASN_NGAP_AMFNameVisibleString.h | 44 +
src/asn/ngap/ASN_NGAP_AMFPagingTarget.c | 75 +
src/asn/ngap/ASN_NGAP_AMFPagingTarget.h | 58 +
src/asn/ngap/ASN_NGAP_AMFPointer.c | 67 +
src/asn/ngap/ASN_NGAP_AMFPointer.h | 44 +
src/asn/ngap/ASN_NGAP_AMFRegionID.c | 67 +
src/asn/ngap/ASN_NGAP_AMFRegionID.h | 44 +
src/asn/ngap/ASN_NGAP_AMFSetID.c | 67 +
src/asn/ngap/ASN_NGAP_AMFSetID.h | 44 +
src/asn/ngap/ASN_NGAP_AMFStatusIndication.c | 50 +
src/asn/ngap/ASN_NGAP_AMFStatusIndication.h | 44 +
src/asn/ngap/ASN_NGAP_ActivatedCellList.c | 50 +
src/asn/ngap/ASN_NGAP_ActivatedCellList.h | 44 +
...AP_AdditionalDLUPTNLInformationForHOItem.c | 84 +
...AP_AdditionalDLUPTNLInformationForHOItem.h | 52 +
...AP_AdditionalDLUPTNLInformationForHOList.c | 50 +
...AP_AdditionalDLUPTNLInformationForHOList.h | 44 +
.../ASN_NGAP_AdditionalQosFlowInformation.c | 53 +
.../ASN_NGAP_AdditionalQosFlowInformation.h | 53 +
.../ASN_NGAP_AllocationAndRetentionPriority.c | 83 +
.../ASN_NGAP_AllocationAndRetentionPriority.h | 52 +
.../ngap/ASN_NGAP_Allowed-CAG-List-per-PLMN.c | 49 +
.../ngap/ASN_NGAP_Allowed-CAG-List-per-PLMN.h | 42 +
src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-Item.c | 131 +
src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-Item.h | 62 +
src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-List.c | 50 +
src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-List.h | 44 +
src/asn/ngap/ASN_NGAP_AllowedNSSAI-Item.c | 63 +
src/asn/ngap/ASN_NGAP_AllowedNSSAI-Item.h | 48 +
src/asn/ngap/ASN_NGAP_AllowedNSSAI.c | 50 +
src/asn/ngap/ASN_NGAP_AllowedNSSAI.h | 44 +
src/asn/ngap/ASN_NGAP_AllowedTACs.c | 49 +
src/asn/ngap/ASN_NGAP_AllowedTACs.h | 42 +
.../ASN_NGAP_AlternativeQoSParaSetIndex.c | 61 +
.../ASN_NGAP_AlternativeQoSParaSetIndex.h | 44 +
.../ngap/ASN_NGAP_AlternativeQoSParaSetItem.c | 104 +
.../ngap/ASN_NGAP_AlternativeQoSParaSetItem.h | 55 +
.../ngap/ASN_NGAP_AlternativeQoSParaSetList.c | 50 +
.../ngap/ASN_NGAP_AlternativeQoSParaSetList.h | 44 +
...SN_NGAP_AlternativeQoSParaSetNotifyIndex.c | 61 +
...SN_NGAP_AlternativeQoSParaSetNotifyIndex.h | 44 +
src/asn/ngap/ASN_NGAP_AreaOfInterest.c | 86 +
src/asn/ngap/ASN_NGAP_AreaOfInterest.h | 52 +
.../ngap/ASN_NGAP_AreaOfInterestCellItem.c | 63 +
.../ngap/ASN_NGAP_AreaOfInterestCellItem.h | 48 +
.../ngap/ASN_NGAP_AreaOfInterestCellList.c | 50 +
.../ngap/ASN_NGAP_AreaOfInterestCellList.h | 44 +
src/asn/ngap/ASN_NGAP_AreaOfInterestItem.c | 73 +
src/asn/ngap/ASN_NGAP_AreaOfInterestItem.h | 50 +
src/asn/ngap/ASN_NGAP_AreaOfInterestList.c | 50 +
src/asn/ngap/ASN_NGAP_AreaOfInterestList.h | 44 +
.../ngap/ASN_NGAP_AreaOfInterestRANNodeItem.c | 63 +
.../ngap/ASN_NGAP_AreaOfInterestRANNodeItem.h | 48 +
.../ngap/ASN_NGAP_AreaOfInterestRANNodeList.c | 50 +
.../ngap/ASN_NGAP_AreaOfInterestRANNodeList.h | 44 +
src/asn/ngap/ASN_NGAP_AreaOfInterestTAIItem.c | 63 +
src/asn/ngap/ASN_NGAP_AreaOfInterestTAIItem.h | 48 +
src/asn/ngap/ASN_NGAP_AreaOfInterestTAIList.c | 50 +
src/asn/ngap/ASN_NGAP_AreaOfInterestTAIList.h | 44 +
src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-EUTRA.c | 96 +
src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-EUTRA.h | 64 +
src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-NR.c | 96 +
src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-NR.h | 64 +
.../ngap/ASN_NGAP_AreaScopeOfNeighCellsItem.c | 74 +
.../ngap/ASN_NGAP_AreaScopeOfNeighCellsItem.h | 50 +
.../ngap/ASN_NGAP_AreaScopeOfNeighCellsList.c | 50 +
.../ngap/ASN_NGAP_AreaScopeOfNeighCellsList.h | 44 +
src/asn/ngap/ASN_NGAP_AreaScopeOfQMC.c | 97 +
src/asn/ngap/ASN_NGAP_AreaScopeOfQMC.h | 64 +
.../ngap/ASN_NGAP_AssistanceDataForPaging.c | 75 +
.../ngap/ASN_NGAP_AssistanceDataForPaging.h | 50 +
...N_NGAP_AssistanceDataForRecommendedCells.c | 63 +
...N_NGAP_AssistanceDataForRecommendedCells.h | 48 +
...GAP_AssociatedMBSQosFlowSetupRequestItem.c | 73 +
...GAP_AssociatedMBSQosFlowSetupRequestItem.h | 49 +
...GAP_AssociatedMBSQosFlowSetupRequestList.c | 50 +
...GAP_AssociatedMBSQosFlowSetupRequestList.h | 44 +
...ciatedMBSQosFlowSetuporModifyRequestItem.c | 73 +
...ciatedMBSQosFlowSetuporModifyRequestItem.h | 49 +
...ciatedMBSQosFlowSetuporModifyRequestList.c | 50 +
...ciatedMBSQosFlowSetuporModifyRequestList.h | 44 +
src/asn/ngap/ASN_NGAP_AssociatedQosFlowItem.c | 121 +
src/asn/ngap/ASN_NGAP_AssociatedQosFlowItem.h | 60 +
src/asn/ngap/ASN_NGAP_AssociatedQosFlowList.c | 50 +
src/asn/ngap/ASN_NGAP_AssociatedQosFlowList.h | 44 +
.../ngap/ASN_NGAP_AuthenticatedIndication.c | 53 +
.../ngap/ASN_NGAP_AuthenticatedIndication.h | 53 +
.../ASN_NGAP_AvailableRANVisibleQoEMetrics.c | 165 +
.../ASN_NGAP_AvailableRANVisibleQoEMetrics.h | 65 +
src/asn/ngap/ASN_NGAP_AveragingWindow.c | 61 +
src/asn/ngap/ASN_NGAP_AveragingWindow.h | 44 +
...NGAP_BeamMeasurementsReportConfiguration.c | 74 +
...NGAP_BeamMeasurementsReportConfiguration.h | 50 +
.../ASN_NGAP_BeamMeasurementsReportQuantity.c | 221 +
.../ASN_NGAP_BeamMeasurementsReportQuantity.h | 73 +
src/asn/ngap/ASN_NGAP_BitRate.c | 67 +
src/asn/ngap/ASN_NGAP_BitRate.h | 44 +
src/asn/ngap/ASN_NGAP_BluetoothMeasConfig.c | 53 +
src/asn/ngap/ASN_NGAP_BluetoothMeasConfig.h | 53 +
.../ASN_NGAP_BluetoothMeasConfigNameItem.c | 63 +
.../ASN_NGAP_BluetoothMeasConfigNameItem.h | 48 +
.../ASN_NGAP_BluetoothMeasConfigNameList.c | 50 +
.../ASN_NGAP_BluetoothMeasConfigNameList.h | 44 +
...N_NGAP_BluetoothMeasurementConfiguration.c | 130 +
...N_NGAP_BluetoothMeasurementConfiguration.h | 61 +
src/asn/ngap/ASN_NGAP_BluetoothName.c | 62 +
src/asn/ngap/ASN_NGAP_BluetoothName.h | 44 +
.../ASN_NGAP_BroadcastCancelledAreaList.c | 119 +
.../ASN_NGAP_BroadcastCancelledAreaList.h | 70 +
.../ASN_NGAP_BroadcastCompletedAreaList.c | 119 +
.../ASN_NGAP_BroadcastCompletedAreaList.h | 70 +
src/asn/ngap/ASN_NGAP_BroadcastPLMNItem.c | 73 +
src/asn/ngap/ASN_NGAP_BroadcastPLMNItem.h | 50 +
src/asn/ngap/ASN_NGAP_BroadcastPLMNList.c | 50 +
src/asn/ngap/ASN_NGAP_BroadcastPLMNList.h | 44 +
...NGAP_BroadcastSessionModificationFailure.c | 50 +
...NGAP_BroadcastSessionModificationFailure.h | 44 +
...NGAP_BroadcastSessionModificationRequest.c | 50 +
...NGAP_BroadcastSessionModificationRequest.h | 44 +
...GAP_BroadcastSessionModificationResponse.c | 50 +
...GAP_BroadcastSessionModificationResponse.h | 44 +
.../ASN_NGAP_BroadcastSessionReleaseRequest.c | 50 +
.../ASN_NGAP_BroadcastSessionReleaseRequest.h | 44 +
...ASN_NGAP_BroadcastSessionReleaseRequired.c | 50 +
...ASN_NGAP_BroadcastSessionReleaseRequired.h | 44 +
...ASN_NGAP_BroadcastSessionReleaseResponse.c | 50 +
...ASN_NGAP_BroadcastSessionReleaseResponse.h | 44 +
.../ASN_NGAP_BroadcastSessionSetupFailure.c | 50 +
.../ASN_NGAP_BroadcastSessionSetupFailure.h | 44 +
.../ASN_NGAP_BroadcastSessionSetupRequest.c | 50 +
.../ASN_NGAP_BroadcastSessionSetupRequest.h | 44 +
.../ASN_NGAP_BroadcastSessionSetupResponse.c | 50 +
.../ASN_NGAP_BroadcastSessionSetupResponse.h | 44 +
src/asn/ngap/ASN_NGAP_BurstArrivalTime.c | 31 +
src/asn/ngap/ASN_NGAP_BurstArrivalTime.h | 43 +
src/asn/ngap/ASN_NGAP_CAG-ID.c | 67 +
src/asn/ngap/ASN_NGAP_CAG-ID.h | 44 +
.../ngap/ASN_NGAP_CEmodeBSupport-Indicator.c | 53 +
.../ngap/ASN_NGAP_CEmodeBSupport-Indicator.h | 53 +
src/asn/ngap/ASN_NGAP_CEmodeBrestricted.c | 55 +
src/asn/ngap/ASN_NGAP_CEmodeBrestricted.h | 54 +
src/asn/ngap/ASN_NGAP_CNAssistedRANTuning.c | 64 +
src/asn/ngap/ASN_NGAP_CNAssistedRANTuning.h | 48 +
...ASN_NGAP_CNTypeRestrictionsForEquivalent.c | 50 +
...ASN_NGAP_CNTypeRestrictionsForEquivalent.h | 44 +
...NGAP_CNTypeRestrictionsForEquivalentItem.c | 121 +
...NGAP_CNTypeRestrictionsForEquivalentItem.h | 60 +
.../ASN_NGAP_CNTypeRestrictionsForServing.c | 53 +
.../ASN_NGAP_CNTypeRestrictionsForServing.h | 53 +
src/asn/ngap/ASN_NGAP_CNsubgroupID.c | 61 +
src/asn/ngap/ASN_NGAP_CNsubgroupID.h | 44 +
.../ngap/ASN_NGAP_COUNTValueForPDCP-SN12.c | 133 +
.../ngap/ASN_NGAP_COUNTValueForPDCP-SN12.h | 49 +
.../ngap/ASN_NGAP_COUNTValueForPDCP-SN18.c | 133 +
.../ngap/ASN_NGAP_COUNTValueForPDCP-SN18.h | 49 +
.../ASN_NGAP_CPTransportLayerInformation.c | 63 +
.../ASN_NGAP_CPTransportLayerInformation.h | 55 +
.../ngap/ASN_NGAP_CancelAllWarningMessages.c | 53 +
.../ngap/ASN_NGAP_CancelAllWarningMessages.h | 53 +
.../ASN_NGAP_CancelledCellsInEAI-EUTRA-Item.c | 73 +
.../ASN_NGAP_CancelledCellsInEAI-EUTRA-Item.h | 50 +
.../ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA.c | 50 +
.../ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA.h | 44 +
.../ASN_NGAP_CancelledCellsInEAI-NR-Item.c | 73 +
.../ASN_NGAP_CancelledCellsInEAI-NR-Item.h | 50 +
.../ngap/ASN_NGAP_CancelledCellsInEAI-NR.c | 50 +
.../ngap/ASN_NGAP_CancelledCellsInEAI-NR.h | 44 +
.../ASN_NGAP_CancelledCellsInTAI-EUTRA-Item.c | 73 +
.../ASN_NGAP_CancelledCellsInTAI-EUTRA-Item.h | 50 +
.../ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA.c | 50 +
.../ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA.h | 44 +
.../ASN_NGAP_CancelledCellsInTAI-NR-Item.c | 73 +
.../ASN_NGAP_CancelledCellsInTAI-NR-Item.h | 50 +
.../ngap/ASN_NGAP_CancelledCellsInTAI-NR.c | 50 +
.../ngap/ASN_NGAP_CancelledCellsInTAI-NR.h | 44 +
src/asn/ngap/ASN_NGAP_CandidateCell.c | 75 +
src/asn/ngap/ASN_NGAP_CandidateCell.h | 58 +
src/asn/ngap/ASN_NGAP_CandidateCellID.c | 63 +
src/asn/ngap/ASN_NGAP_CandidateCellID.h | 48 +
src/asn/ngap/ASN_NGAP_CandidateCellItem.c | 63 +
src/asn/ngap/ASN_NGAP_CandidateCellItem.h | 48 +
src/asn/ngap/ASN_NGAP_CandidateCellList.c | 50 +
src/asn/ngap/ASN_NGAP_CandidateCellList.h | 44 +
src/asn/ngap/ASN_NGAP_CandidatePCI.c | 133 +
src/asn/ngap/ASN_NGAP_CandidatePCI.h | 49 +
src/asn/ngap/ASN_NGAP_Cause.c | 103 +
src/asn/ngap/ASN_NGAP_Cause.h | 67 +
src/asn/ngap/ASN_NGAP_CauseMisc.c | 63 +
src/asn/ngap/ASN_NGAP_CauseMisc.h | 58 +
src/asn/ngap/ASN_NGAP_CauseNas.c | 61 +
src/asn/ngap/ASN_NGAP_CauseNas.h | 57 +
src/asn/ngap/ASN_NGAP_CauseProtocol.c | 65 +
src/asn/ngap/ASN_NGAP_CauseProtocol.h | 59 +
src/asn/ngap/ASN_NGAP_CauseRadioNetwork.c | 165 +
src/asn/ngap/ASN_NGAP_CauseRadioNetwork.h | 109 +
src/asn/ngap/ASN_NGAP_CauseTransport.c | 55 +
src/asn/ngap/ASN_NGAP_CauseTransport.h | 54 +
src/asn/ngap/ASN_NGAP_Cell-CAGInformation.c | 73 +
src/asn/ngap/ASN_NGAP_Cell-CAGInformation.h | 50 +
src/asn/ngap/ASN_NGAP_CellBasedMDT-EUTRA.c | 63 +
src/asn/ngap/ASN_NGAP_CellBasedMDT-EUTRA.h | 48 +
src/asn/ngap/ASN_NGAP_CellBasedMDT-NR.c | 63 +
src/asn/ngap/ASN_NGAP_CellBasedMDT-NR.h | 48 +
src/asn/ngap/ASN_NGAP_CellBasedQMC.c | 63 +
src/asn/ngap/ASN_NGAP_CellBasedQMC.h | 48 +
src/asn/ngap/ASN_NGAP_CellCAGList.c | 49 +
src/asn/ngap/ASN_NGAP_CellCAGList.h | 42 +
.../ngap/ASN_NGAP_CellIDBroadcastEUTRA-Item.c | 63 +
.../ngap/ASN_NGAP_CellIDBroadcastEUTRA-Item.h | 48 +
src/asn/ngap/ASN_NGAP_CellIDBroadcastEUTRA.c | 50 +
src/asn/ngap/ASN_NGAP_CellIDBroadcastEUTRA.h | 44 +
.../ngap/ASN_NGAP_CellIDBroadcastNR-Item.c | 63 +
.../ngap/ASN_NGAP_CellIDBroadcastNR-Item.h | 48 +
src/asn/ngap/ASN_NGAP_CellIDBroadcastNR.c | 50 +
src/asn/ngap/ASN_NGAP_CellIDBroadcastNR.h | 44 +
.../ngap/ASN_NGAP_CellIDCancelledEUTRA-Item.c | 73 +
.../ngap/ASN_NGAP_CellIDCancelledEUTRA-Item.h | 50 +
src/asn/ngap/ASN_NGAP_CellIDCancelledEUTRA.c | 50 +
src/asn/ngap/ASN_NGAP_CellIDCancelledEUTRA.h | 44 +
.../ngap/ASN_NGAP_CellIDCancelledNR-Item.c | 73 +
.../ngap/ASN_NGAP_CellIDCancelledNR-Item.h | 50 +
src/asn/ngap/ASN_NGAP_CellIDCancelledNR.c | 50 +
src/asn/ngap/ASN_NGAP_CellIDCancelledNR.h | 44 +
src/asn/ngap/ASN_NGAP_CellIDListForRestart.c | 75 +
src/asn/ngap/ASN_NGAP_CellIDListForRestart.h | 58 +
.../ngap/ASN_NGAP_CellIdListforMDT-EUTRA.c | 50 +
.../ngap/ASN_NGAP_CellIdListforMDT-EUTRA.h | 44 +
src/asn/ngap/ASN_NGAP_CellIdListforMDT-NR.c | 50 +
src/asn/ngap/ASN_NGAP_CellIdListforMDT-NR.h | 44 +
src/asn/ngap/ASN_NGAP_CellIdListforQMC.c | 50 +
src/asn/ngap/ASN_NGAP_CellIdListforQMC.h | 44 +
src/asn/ngap/ASN_NGAP_CellSize.c | 59 +
src/asn/ngap/ASN_NGAP_CellSize.h | 56 +
src/asn/ngap/ASN_NGAP_CellTrafficTrace.c | 50 +
src/asn/ngap/ASN_NGAP_CellTrafficTrace.h | 44 +
src/asn/ngap/ASN_NGAP_CellType.c | 63 +
src/asn/ngap/ASN_NGAP_CellType.h | 48 +
src/asn/ngap/ASN_NGAP_CellsToActivateList.c | 50 +
src/asn/ngap/ASN_NGAP_CellsToActivateList.h | 44 +
src/asn/ngap/ASN_NGAP_CommonNetworkInstance.c | 31 +
src/asn/ngap/ASN_NGAP_CommonNetworkInstance.h | 43 +
.../ASN_NGAP_CompletedCellsInEAI-EUTRA-Item.c | 63 +
.../ASN_NGAP_CompletedCellsInEAI-EUTRA-Item.h | 48 +
.../ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA.c | 50 +
.../ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA.h | 44 +
.../ASN_NGAP_CompletedCellsInEAI-NR-Item.c | 63 +
.../ASN_NGAP_CompletedCellsInEAI-NR-Item.h | 48 +
.../ngap/ASN_NGAP_CompletedCellsInEAI-NR.c | 50 +
.../ngap/ASN_NGAP_CompletedCellsInEAI-NR.h | 44 +
.../ASN_NGAP_CompletedCellsInTAI-EUTRA-Item.c | 63 +
.../ASN_NGAP_CompletedCellsInTAI-EUTRA-Item.h | 48 +
.../ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA.c | 50 +
.../ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA.h | 44 +
.../ASN_NGAP_CompletedCellsInTAI-NR-Item.c | 63 +
.../ASN_NGAP_CompletedCellsInTAI-NR-Item.h | 48 +
.../ngap/ASN_NGAP_CompletedCellsInTAI-NR.c | 50 +
.../ngap/ASN_NGAP_CompletedCellsInTAI-NR.h | 44 +
.../ASN_NGAP_CompositeAvailableCapacity.c | 133 +
.../ASN_NGAP_CompositeAvailableCapacity.h | 49 +
.../ASN_NGAP_ConcurrentWarningMessageInd.c | 53 +
.../ASN_NGAP_ConcurrentWarningMessageInd.h | 53 +
...NGAP_ConfidentialityProtectionIndication.c | 57 +
...NGAP_ConfidentialityProtectionIndication.h | 55 +
...ASN_NGAP_ConfidentialityProtectionResult.c | 55 +
...ASN_NGAP_ConfidentialityProtectionResult.h | 54 +
src/asn/ngap/ASN_NGAP_ConfiguredNSSAI.c | 62 +
src/asn/ngap/ASN_NGAP_ConfiguredNSSAI.h | 44 +
.../ngap/ASN_NGAP_ConfiguredTACIndication.c | 53 +
.../ngap/ASN_NGAP_ConfiguredTACIndication.h | 53 +
...N_NGAP_ConnectionEstablishmentIndication.c | 50 +
...N_NGAP_ConnectionEstablishmentIndication.h | 44 +
...eNetworkAssistanceInformationForInactive.c | 114 +
...eNetworkAssistanceInformationForInactive.h | 58 +
.../ngap/ASN_NGAP_CoverageEnhancementLevel.c | 31 +
.../ngap/ASN_NGAP_CoverageEnhancementLevel.h | 43 +
src/asn/ngap/ASN_NGAP_Criticality.c | 55 +
src/asn/ngap/ASN_NGAP_Criticality.h | 52 +
.../ASN_NGAP_CriticalityDiagnostics-IE-Item.c | 83 +
.../ASN_NGAP_CriticalityDiagnostics-IE-Item.h | 52 +
.../ASN_NGAP_CriticalityDiagnostics-IE-List.c | 50 +
.../ASN_NGAP_CriticalityDiagnostics-IE-List.h | 44 +
.../ngap/ASN_NGAP_CriticalityDiagnostics.c | 94 +
.../ngap/ASN_NGAP_CriticalityDiagnostics.h | 54 +
src/asn/ngap/ASN_NGAP_DAPSRequestInfo.c | 109 +
src/asn/ngap/ASN_NGAP_DAPSRequestInfo.h | 57 +
src/asn/ngap/ASN_NGAP_DAPSResponseInfo.c | 111 +
src/asn/ngap/ASN_NGAP_DAPSResponseInfo.h | 58 +
src/asn/ngap/ASN_NGAP_DAPSResponseInfoItem.c | 73 +
src/asn/ngap/ASN_NGAP_DAPSResponseInfoItem.h | 50 +
src/asn/ngap/ASN_NGAP_DAPSResponseInfoList.c | 50 +
src/asn/ngap/ASN_NGAP_DAPSResponseInfoList.h | 44 +
.../ngap/ASN_NGAP_DL-CP-SecurityInformation.c | 63 +
.../ngap/ASN_NGAP_DL-CP-SecurityInformation.h | 48 +
src/asn/ngap/ASN_NGAP_DL-NAS-MAC.c | 67 +
src/asn/ngap/ASN_NGAP_DL-NAS-MAC.h | 44 +
.../ASN_NGAP_DL-NGU-TNLInformationReused.c | 53 +
.../ASN_NGAP_DL-NGU-TNLInformationReused.h | 53 +
src/asn/ngap/ASN_NGAP_DLForwarding.c | 53 +
src/asn/ngap/ASN_NGAP_DLForwarding.h | 53 +
src/asn/ngap/ASN_NGAP_DRB-ID.c | 61 +
src/asn/ngap/ASN_NGAP_DRB-ID.h | 44 +
src/asn/ngap/ASN_NGAP_DRBStatusDL.c | 75 +
src/asn/ngap/ASN_NGAP_DRBStatusDL.h | 58 +
src/asn/ngap/ASN_NGAP_DRBStatusDL12.c | 63 +
src/asn/ngap/ASN_NGAP_DRBStatusDL12.h | 48 +
src/asn/ngap/ASN_NGAP_DRBStatusDL18.c | 63 +
src/asn/ngap/ASN_NGAP_DRBStatusDL18.h | 48 +
src/asn/ngap/ASN_NGAP_DRBStatusUL.c | 75 +
src/asn/ngap/ASN_NGAP_DRBStatusUL.h | 58 +
src/asn/ngap/ASN_NGAP_DRBStatusUL12.c | 109 +
src/asn/ngap/ASN_NGAP_DRBStatusUL12.h | 50 +
src/asn/ngap/ASN_NGAP_DRBStatusUL18.c | 109 +
src/asn/ngap/ASN_NGAP_DRBStatusUL18.h | 50 +
...AP_DRBsSubjectToEarlyStatusTransfer-Item.c | 73 +
...AP_DRBsSubjectToEarlyStatusTransfer-Item.h | 50 +
...AP_DRBsSubjectToEarlyStatusTransfer-List.c | 50 +
...AP_DRBsSubjectToEarlyStatusTransfer-List.h | 44 +
...ASN_NGAP_DRBsSubjectToStatusTransferItem.c | 83 +
...ASN_NGAP_DRBsSubjectToStatusTransferItem.h | 52 +
...ASN_NGAP_DRBsSubjectToStatusTransferList.c | 50 +
...ASN_NGAP_DRBsSubjectToStatusTransferList.h | 44 +
.../ngap/ASN_NGAP_DRBsToQosFlowsMappingItem.c | 73 +
.../ngap/ASN_NGAP_DRBsToQosFlowsMappingItem.h | 50 +
.../ngap/ASN_NGAP_DRBsToQosFlowsMappingList.c | 50 +
.../ngap/ASN_NGAP_DRBsToQosFlowsMappingList.h | 44 +
src/asn/ngap/ASN_NGAP_DataCodingScheme.c | 67 +
src/asn/ngap/ASN_NGAP_DataCodingScheme.h | 44 +
.../ngap/ASN_NGAP_DataForwardingAccepted.c | 53 +
.../ngap/ASN_NGAP_DataForwardingAccepted.h | 53 +
.../ngap/ASN_NGAP_DataForwardingNotPossible.c | 53 +
.../ngap/ASN_NGAP_DataForwardingNotPossible.h | 53 +
.../ASN_NGAP_DataForwardingResponseDRBItem.c | 84 +
.../ASN_NGAP_DataForwardingResponseDRBItem.h | 51 +
.../ASN_NGAP_DataForwardingResponseDRBList.c | 50 +
.../ASN_NGAP_DataForwardingResponseDRBList.h | 44 +
.../ASN_NGAP_DataForwardingResponseERABList.c | 50 +
.../ASN_NGAP_DataForwardingResponseERABList.h | 44 +
..._NGAP_DataForwardingResponseERABListItem.c | 73 +
..._NGAP_DataForwardingResponseERABListItem.h | 50 +
src/asn/ngap/ASN_NGAP_DeactivateTrace.c | 50 +
src/asn/ngap/ASN_NGAP_DeactivateTrace.h | 44 +
src/asn/ngap/ASN_NGAP_DelayCritical.c | 55 +
src/asn/ngap/ASN_NGAP_DelayCritical.h | 54 +
...SN_NGAP_DirectForwardingPathAvailability.c | 53 +
...SN_NGAP_DirectForwardingPathAvailability.h | 53 +
.../ASN_NGAP_DistributionReleaseRequest.c | 50 +
.../ASN_NGAP_DistributionReleaseRequest.h | 44 +
.../ASN_NGAP_DistributionReleaseResponse.c | 50 +
.../ASN_NGAP_DistributionReleaseResponse.h | 44 +
.../ngap/ASN_NGAP_DistributionSetupFailure.c | 50 +
.../ngap/ASN_NGAP_DistributionSetupFailure.h | 44 +
.../ngap/ASN_NGAP_DistributionSetupRequest.c | 50 +
.../ngap/ASN_NGAP_DistributionSetupRequest.h | 44 +
.../ngap/ASN_NGAP_DistributionSetupResponse.c | 50 +
.../ngap/ASN_NGAP_DistributionSetupResponse.h | 44 +
src/asn/ngap/ASN_NGAP_DownlinkNASTransport.c | 50 +
src/asn/ngap/ASN_NGAP_DownlinkNASTransport.h | 44 +
...AP_DownlinkNonUEAssociatedNRPPaTransport.c | 50 +
...AP_DownlinkNonUEAssociatedNRPPaTransport.h | 44 +
...SN_NGAP_DownlinkRANConfigurationTransfer.c | 50 +
...SN_NGAP_DownlinkRANConfigurationTransfer.h | 44 +
.../ASN_NGAP_DownlinkRANEarlyStatusTransfer.c | 50 +
.../ASN_NGAP_DownlinkRANEarlyStatusTransfer.h | 44 +
.../ngap/ASN_NGAP_DownlinkRANStatusTransfer.c | 50 +
.../ngap/ASN_NGAP_DownlinkRANStatusTransfer.h | 44 +
.../ASN_NGAP_DownlinkRIMInformationTransfer.c | 50 +
.../ASN_NGAP_DownlinkRIMInformationTransfer.h | 44 +
..._NGAP_DownlinkUEAssociatedNRPPaTransport.c | 50 +
..._NGAP_DownlinkUEAssociatedNRPPaTransport.h | 44 +
src/asn/ngap/ASN_NGAP_Dynamic5QIDescriptor.c | 123 +
src/asn/ngap/ASN_NGAP_Dynamic5QIDescriptor.h | 60 +
src/asn/ngap/ASN_NGAP_E-RAB-ID.c | 61 +
src/asn/ngap/ASN_NGAP_E-RAB-ID.h | 44 +
src/asn/ngap/ASN_NGAP_E-RABInformationItem.c | 73 +
src/asn/ngap/ASN_NGAP_E-RABInformationItem.h | 50 +
src/asn/ngap/ASN_NGAP_E-RABInformationList.c | 50 +
src/asn/ngap/ASN_NGAP_E-RABInformationList.h | 44 +
src/asn/ngap/ASN_NGAP_EDT-Session.c | 53 +
src/asn/ngap/ASN_NGAP_EDT-Session.h | 53 +
.../ASN_NGAP_EN-DCSONConfigurationTransfer.c | 31 +
.../ASN_NGAP_EN-DCSONConfigurationTransfer.h | 43 +
src/asn/ngap/ASN_NGAP_ENB-ID.c | 237 +
src/asn/ngap/ASN_NGAP_ENB-ID.h | 61 +
src/asn/ngap/ASN_NGAP_EPS-TAC.c | 62 +
src/asn/ngap/ASN_NGAP_EPS-TAC.h | 44 +
src/asn/ngap/ASN_NGAP_EPS-TAI.c | 73 +
src/asn/ngap/ASN_NGAP_EPS-TAI.h | 50 +
src/asn/ngap/ASN_NGAP_EUTRA-CGI.c | 73 +
src/asn/ngap/ASN_NGAP_EUTRA-CGI.h | 50 +
src/asn/ngap/ASN_NGAP_EUTRA-CGIList.c | 50 +
src/asn/ngap/ASN_NGAP_EUTRA-CGIList.h | 44 +
.../ngap/ASN_NGAP_EUTRA-CGIListForWarning.c | 50 +
.../ngap/ASN_NGAP_EUTRA-CGIListForWarning.h | 44 +
.../ngap/ASN_NGAP_EUTRA-Paging-Time-Window.c | 83 +
.../ngap/ASN_NGAP_EUTRA-Paging-Time-Window.h | 68 +
.../ngap/ASN_NGAP_EUTRA-Paging-eDRX-Cycle.c | 79 +
.../ngap/ASN_NGAP_EUTRA-Paging-eDRX-Cycle.h | 66 +
.../ASN_NGAP_EUTRA-PagingeDRXInformation.c | 73 +
.../ASN_NGAP_EUTRA-PagingeDRXInformation.h | 50 +
src/asn/ngap/ASN_NGAP_EUTRACellIdentity.c | 67 +
src/asn/ngap/ASN_NGAP_EUTRACellIdentity.h | 44 +
src/asn/ngap/ASN_NGAP_EUTRAN-CellReportItem.c | 104 +
src/asn/ngap/ASN_NGAP_EUTRAN-CellReportItem.h | 56 +
src/asn/ngap/ASN_NGAP_EUTRAN-CellReportList.c | 50 +
src/asn/ngap/ASN_NGAP_EUTRAN-CellReportList.h | 44 +
.../ngap/ASN_NGAP_EUTRAN-CellToReportItem.c | 63 +
.../ngap/ASN_NGAP_EUTRAN-CellToReportItem.h | 48 +
.../ngap/ASN_NGAP_EUTRAN-CellToReportList.c | 50 +
.../ngap/ASN_NGAP_EUTRAN-CellToReportList.h | 44 +
...P_EUTRAN-CompositeAvailableCapacityGroup.c | 73 +
...P_EUTRAN-CompositeAvailableCapacityGroup.h | 49 +
.../ngap/ASN_NGAP_EUTRAN-NumberOfActiveUEs.c | 61 +
.../ngap/ASN_NGAP_EUTRAN-NumberOfActiveUEs.h | 44 +
.../ASN_NGAP_EUTRAN-RadioResourceStatus.c | 373 +
.../ASN_NGAP_EUTRAN-RadioResourceStatus.h | 55 +
.../ngap/ASN_NGAP_EUTRAN-ReportingStatusIEs.c | 63 +
.../ngap/ASN_NGAP_EUTRAN-ReportingStatusIEs.h | 48 +
.../ngap/ASN_NGAP_EUTRAN-ReportingSystemIEs.c | 63 +
.../ngap/ASN_NGAP_EUTRAN-ReportingSystemIEs.h | 48 +
.../ngap/ASN_NGAP_EUTRAencryptionAlgorithms.c | 67 +
.../ngap/ASN_NGAP_EUTRAencryptionAlgorithms.h | 44 +
..._NGAP_EUTRAintegrityProtectionAlgorithms.c | 67 +
..._NGAP_EUTRAintegrityProtectionAlgorithms.h | 44 +
src/asn/ngap/ASN_NGAP_EarlyMeasurement.c | 53 +
src/asn/ngap/ASN_NGAP_EarlyMeasurement.h | 53 +
...EarlyStatusTransfer-TransparentContainer.c | 63 +
...EarlyStatusTransfer-TransparentContainer.h | 48 +
src/asn/ngap/ASN_NGAP_EmergencyAreaID.c | 62 +
src/asn/ngap/ASN_NGAP_EmergencyAreaID.h | 44 +
..._NGAP_EmergencyAreaIDBroadcastEUTRA-Item.c | 73 +
..._NGAP_EmergencyAreaIDBroadcastEUTRA-Item.h | 50 +
.../ASN_NGAP_EmergencyAreaIDBroadcastEUTRA.c | 50 +
.../ASN_NGAP_EmergencyAreaIDBroadcastEUTRA.h | 44 +
...ASN_NGAP_EmergencyAreaIDBroadcastNR-Item.c | 73 +
...ASN_NGAP_EmergencyAreaIDBroadcastNR-Item.h | 50 +
.../ASN_NGAP_EmergencyAreaIDBroadcastNR.c | 50 +
.../ASN_NGAP_EmergencyAreaIDBroadcastNR.h | 44 +
..._NGAP_EmergencyAreaIDCancelledEUTRA-Item.c | 73 +
..._NGAP_EmergencyAreaIDCancelledEUTRA-Item.h | 50 +
.../ASN_NGAP_EmergencyAreaIDCancelledEUTRA.c | 50 +
.../ASN_NGAP_EmergencyAreaIDCancelledEUTRA.h | 44 +
...ASN_NGAP_EmergencyAreaIDCancelledNR-Item.c | 73 +
...ASN_NGAP_EmergencyAreaIDCancelledNR-Item.h | 50 +
.../ASN_NGAP_EmergencyAreaIDCancelledNR.c | 50 +
.../ASN_NGAP_EmergencyAreaIDCancelledNR.h | 44 +
src/asn/ngap/ASN_NGAP_EmergencyAreaIDList.c | 49 +
src/asn/ngap/ASN_NGAP_EmergencyAreaIDList.h | 42 +
.../ASN_NGAP_EmergencyAreaIDListForRestart.c | 49 +
.../ASN_NGAP_EmergencyAreaIDListForRestart.h | 42 +
.../ASN_NGAP_EmergencyFallbackIndicator.c | 73 +
.../ASN_NGAP_EmergencyFallbackIndicator.h | 50 +
...N_NGAP_EmergencyFallbackRequestIndicator.c | 53 +
...N_NGAP_EmergencyFallbackRequestIndicator.h | 53 +
.../ngap/ASN_NGAP_EmergencyServiceTargetCN.c | 55 +
.../ngap/ASN_NGAP_EmergencyServiceTargetCN.h | 54 +
src/asn/ngap/ASN_NGAP_EndIndication.c | 55 +
src/asn/ngap/ASN_NGAP_EndIndication.h | 54 +
.../ngap/ASN_NGAP_EndpointIPAddressAndPort.c | 73 +
.../ngap/ASN_NGAP_EndpointIPAddressAndPort.h | 46 +
.../ASN_NGAP_Enhanced-CoverageRestriction.c | 53 +
.../ASN_NGAP_Enhanced-CoverageRestriction.h | 53 +
src/asn/ngap/ASN_NGAP_EquivalentPLMNs.c | 49 +
src/asn/ngap/ASN_NGAP_EquivalentPLMNs.h | 42 +
src/asn/ngap/ASN_NGAP_ErrorIndication.c | 50 +
src/asn/ngap/ASN_NGAP_ErrorIndication.h | 44 +
.../ngap/ASN_NGAP_EventBasedReportingIEs.c | 83 +
.../ngap/ASN_NGAP_EventBasedReportingIEs.h | 51 +
.../ngap/ASN_NGAP_EventL1LoggedMDTConfig.c | 83 +
.../ngap/ASN_NGAP_EventL1LoggedMDTConfig.h | 52 +
src/asn/ngap/ASN_NGAP_EventTrigger.c | 120 +
src/asn/ngap/ASN_NGAP_EventTrigger.h | 65 +
src/asn/ngap/ASN_NGAP_EventType.c | 63 +
src/asn/ngap/ASN_NGAP_EventType.h | 58 +
..._ExcessPacketDelayThresholdConfiguration.c | 50 +
..._ExcessPacketDelayThresholdConfiguration.h | 44 +
.../ASN_NGAP_ExcessPacketDelayThresholdItem.c | 73 +
.../ASN_NGAP_ExcessPacketDelayThresholdItem.h | 50 +
...ASN_NGAP_ExcessPacketDelayThresholdValue.c | 89 +
...ASN_NGAP_ExcessPacketDelayThresholdValue.h | 71 +
.../ngap/ASN_NGAP_ExpectedActivityPeriod.c | 61 +
.../ngap/ASN_NGAP_ExpectedActivityPeriod.h | 44 +
src/asn/ngap/ASN_NGAP_ExpectedHOInterval.c | 65 +
src/asn/ngap/ASN_NGAP_ExpectedHOInterval.h | 59 +
src/asn/ngap/ASN_NGAP_ExpectedIdlePeriod.c | 61 +
src/asn/ngap/ASN_NGAP_ExpectedIdlePeriod.h | 44 +
.../ASN_NGAP_ExpectedUEActivityBehaviour.c | 83 +
.../ASN_NGAP_ExpectedUEActivityBehaviour.h | 52 +
src/asn/ngap/ASN_NGAP_ExpectedUEBehaviour.c | 95 +
src/asn/ngap/ASN_NGAP_ExpectedUEBehaviour.h | 54 +
src/asn/ngap/ASN_NGAP_ExpectedUEMobility.c | 55 +
src/asn/ngap/ASN_NGAP_ExpectedUEMobility.h | 54 +
.../ASN_NGAP_ExpectedUEMovingTrajectory.c | 50 +
.../ASN_NGAP_ExpectedUEMovingTrajectory.h | 44 +
.../ASN_NGAP_ExpectedUEMovingTrajectoryItem.c | 103 +
.../ASN_NGAP_ExpectedUEMovingTrajectoryItem.h | 50 +
src/asn/ngap/ASN_NGAP_Extended-AMFName.c | 73 +
src/asn/ngap/ASN_NGAP_Extended-AMFName.h | 50 +
.../ngap/ASN_NGAP_Extended-ConnectedTime.c | 61 +
.../ngap/ASN_NGAP_Extended-ConnectedTime.h | 44 +
src/asn/ngap/ASN_NGAP_Extended-RANNodeName.c | 73 +
src/asn/ngap/ASN_NGAP_Extended-RANNodeName.h | 50 +
.../ASN_NGAP_ExtendedMobilityInformation.c | 67 +
.../ASN_NGAP_ExtendedMobilityInformation.h | 44 +
.../ngap/ASN_NGAP_ExtendedPacketDelayBudget.c | 61 +
.../ngap/ASN_NGAP_ExtendedPacketDelayBudget.h | 44 +
...N_NGAP_ExtendedRATRestrictionInformation.c | 145 +
...N_NGAP_ExtendedRATRestrictionInformation.h | 49 +
src/asn/ngap/ASN_NGAP_ExtendedRNC-ID.c | 61 +
src/asn/ngap/ASN_NGAP_ExtendedRNC-ID.h | 44 +
.../ngap/ASN_NGAP_ExtendedReportIntervalMDT.c | 55 +
.../ngap/ASN_NGAP_ExtendedReportIntervalMDT.h | 54 +
.../ngap/ASN_NGAP_ExtendedSliceSupportList.c | 50 +
.../ngap/ASN_NGAP_ExtendedSliceSupportList.h | 44 +
.../ASN_NGAP_ExtendedUEIdentityIndexValue.c | 67 +
.../ASN_NGAP_ExtendedUEIdentityIndexValue.h | 44 +
src/asn/ngap/ASN_NGAP_FailureIndication.c | 63 +
src/asn/ngap/ASN_NGAP_FailureIndication.h | 48 +
src/asn/ngap/ASN_NGAP_FirstDLCount.c | 63 +
src/asn/ngap/ASN_NGAP_FirstDLCount.h | 48 +
src/asn/ngap/ASN_NGAP_FiveG-ProSeAuthorized.c | 103 +
src/asn/ngap/ASN_NGAP_FiveG-ProSeAuthorized.h | 56 +
.../ASN_NGAP_FiveG-ProSePC5QoSParameters.c | 73 +
.../ASN_NGAP_FiveG-ProSePC5QoSParameters.h | 50 +
src/asn/ngap/ASN_NGAP_FiveG-S-TMSI.c | 83 +
src/asn/ngap/ASN_NGAP_FiveG-S-TMSI.h | 52 +
src/asn/ngap/ASN_NGAP_FiveG-TMSI.c | 62 +
src/asn/ngap/ASN_NGAP_FiveG-TMSI.h | 44 +
.../ASN_NGAP_FiveGProSeDirectCommunication.c | 55 +
.../ASN_NGAP_FiveGProSeDirectCommunication.h | 54 +
.../ngap/ASN_NGAP_FiveGProSeDirectDiscovery.c | 55 +
.../ngap/ASN_NGAP_FiveGProSeDirectDiscovery.h | 54 +
.../ngap/ASN_NGAP_FiveGProSeLayer2RemoteUE.c | 55 +
.../ngap/ASN_NGAP_FiveGProSeLayer2RemoteUE.h | 54 +
...SN_NGAP_FiveGProSeLayer2UEtoNetworkRelay.c | 55 +
...SN_NGAP_FiveGProSeLayer2UEtoNetworkRelay.h | 54 +
...SN_NGAP_FiveGProSeLayer3UEtoNetworkRelay.c | 55 +
...SN_NGAP_FiveGProSeLayer3UEtoNetworkRelay.h | 54 +
.../ngap/ASN_NGAP_FiveGProSePC5FlowBitRates.c | 73 +
.../ngap/ASN_NGAP_FiveGProSePC5FlowBitRates.h | 49 +
.../ngap/ASN_NGAP_FiveGProSePC5QoSFlowItem.c | 84 +
.../ngap/ASN_NGAP_FiveGProSePC5QoSFlowItem.h | 52 +
.../ngap/ASN_NGAP_FiveGProSePC5QoSFlowList.c | 50 +
.../ngap/ASN_NGAP_FiveGProSePC5QoSFlowList.h | 44 +
src/asn/ngap/ASN_NGAP_FiveQI.c | 61 +
src/asn/ngap/ASN_NGAP_FiveQI.h | 44 +
.../ASN_NGAP_ForbiddenAreaInformation-Item.c | 73 +
.../ASN_NGAP_ForbiddenAreaInformation-Item.h | 50 +
.../ngap/ASN_NGAP_ForbiddenAreaInformation.c | 50 +
.../ngap/ASN_NGAP_ForbiddenAreaInformation.h | 44 +
src/asn/ngap/ASN_NGAP_ForbiddenTACs.c | 49 +
src/asn/ngap/ASN_NGAP_ForbiddenTACs.h | 42 +
src/asn/ngap/ASN_NGAP_FromEUTRANtoNGRAN.c | 73 +
src/asn/ngap/ASN_NGAP_FromEUTRANtoNGRAN.h | 46 +
src/asn/ngap/ASN_NGAP_FromNGRANtoEUTRAN.c | 73 +
src/asn/ngap/ASN_NGAP_FromNGRANtoEUTRAN.h | 46 +
src/asn/ngap/ASN_NGAP_GBR-QosInformation.c | 123 +
src/asn/ngap/ASN_NGAP_GBR-QosInformation.h | 56 +
src/asn/ngap/ASN_NGAP_GNB-ID.c | 99 +
src/asn/ngap/ASN_NGAP_GNB-ID.h | 55 +
src/asn/ngap/ASN_NGAP_GNBSetID.c | 67 +
src/asn/ngap/ASN_NGAP_GNBSetID.h | 44 +
src/asn/ngap/ASN_NGAP_GTP-TEID.c | 62 +
src/asn/ngap/ASN_NGAP_GTP-TEID.h | 44 +
src/asn/ngap/ASN_NGAP_GTPTunnel.c | 73 +
src/asn/ngap/ASN_NGAP_GTPTunnel.h | 50 +
src/asn/ngap/ASN_NGAP_GUAMI.c | 93 +
src/asn/ngap/ASN_NGAP_GUAMI.h | 54 +
src/asn/ngap/ASN_NGAP_GUAMIType.c | 55 +
src/asn/ngap/ASN_NGAP_GUAMIType.h | 54 +
src/asn/ngap/ASN_NGAP_GlobalCable-ID-new.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalCable-ID-new.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalCable-ID.c | 31 +
src/asn/ngap/ASN_NGAP_GlobalCable-ID.h | 43 +
src/asn/ngap/ASN_NGAP_GlobalENB-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalENB-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalGNB-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalGNB-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalLine-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalLine-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalLineIdentity.c | 31 +
src/asn/ngap/ASN_NGAP_GlobalLineIdentity.h | 43 +
src/asn/ngap/ASN_NGAP_GlobalN3IWF-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalN3IWF-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalNgENB-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalNgENB-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalRANNodeID.c | 86 +
src/asn/ngap/ASN_NGAP_GlobalRANNodeID.h | 61 +
src/asn/ngap/ASN_NGAP_GlobalTNGF-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalTNGF-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalTWIF-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalTWIF-ID.h | 50 +
src/asn/ngap/ASN_NGAP_GlobalW-AGF-ID.c | 73 +
src/asn/ngap/ASN_NGAP_GlobalW-AGF-ID.h | 50 +
src/asn/ngap/ASN_NGAP_HFCNode-ID-new.c | 73 +
src/asn/ngap/ASN_NGAP_HFCNode-ID-new.h | 50 +
src/asn/ngap/ASN_NGAP_HFCNode-ID.c | 31 +
src/asn/ngap/ASN_NGAP_HFCNode-ID.h | 43 +
src/asn/ngap/ASN_NGAP_HOReport.c | 232 +
src/asn/ngap/ASN_NGAP_HOReport.h | 74 +
src/asn/ngap/ASN_NGAP_HandoverCancel.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverCancel.h | 44 +
.../ngap/ASN_NGAP_HandoverCancelAcknowledge.c | 50 +
.../ngap/ASN_NGAP_HandoverCancelAcknowledge.h | 44 +
src/asn/ngap/ASN_NGAP_HandoverCommand.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverCommand.h | 44 +
.../ngap/ASN_NGAP_HandoverCommandTransfer.c | 86 +
.../ngap/ASN_NGAP_HandoverCommandTransfer.h | 50 +
src/asn/ngap/ASN_NGAP_HandoverFailure.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverFailure.h | 44 +
src/asn/ngap/ASN_NGAP_HandoverFlag.c | 53 +
src/asn/ngap/ASN_NGAP_HandoverFlag.h | 53 +
src/asn/ngap/ASN_NGAP_HandoverNotify.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverNotify.h | 44 +
.../ASN_NGAP_HandoverPreparationFailure.c | 50 +
.../ASN_NGAP_HandoverPreparationFailure.h | 44 +
..._HandoverPreparationUnsuccessfulTransfer.c | 63 +
..._HandoverPreparationUnsuccessfulTransfer.h | 46 +
src/asn/ngap/ASN_NGAP_HandoverRequest.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverRequest.h | 44 +
.../ASN_NGAP_HandoverRequestAcknowledge.c | 50 +
.../ASN_NGAP_HandoverRequestAcknowledge.h | 44 +
..._NGAP_HandoverRequestAcknowledgeTransfer.c | 117 +
..._NGAP_HandoverRequestAcknowledgeTransfer.h | 56 +
src/asn/ngap/ASN_NGAP_HandoverRequired.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverRequired.h | 44 +
.../ngap/ASN_NGAP_HandoverRequiredTransfer.c | 63 +
.../ngap/ASN_NGAP_HandoverRequiredTransfer.h | 46 +
...erResourceAllocationUnsuccessfulTransfer.c | 74 +
...erResourceAllocationUnsuccessfulTransfer.h | 48 +
src/asn/ngap/ASN_NGAP_HandoverSuccess.c | 50 +
src/asn/ngap/ASN_NGAP_HandoverSuccess.h | 44 +
src/asn/ngap/ASN_NGAP_HandoverType.c | 59 +
src/asn/ngap/ASN_NGAP_HandoverType.h | 56 +
.../ASN_NGAP_HashedUEIdentityIndexValue.c | 67 +
.../ASN_NGAP_HashedUEIdentityIndexValue.h | 44 +
src/asn/ngap/ASN_NGAP_Hysteresis.c | 61 +
src/asn/ngap/ASN_NGAP_Hysteresis.h | 44 +
src/asn/ngap/ASN_NGAP_IAB-Authorized.c | 55 +
src/asn/ngap/ASN_NGAP_IAB-Authorized.h | 54 +
src/asn/ngap/ASN_NGAP_IAB-Supported.c | 53 +
src/asn/ngap/ASN_NGAP_IAB-Supported.h | 53 +
src/asn/ngap/ASN_NGAP_IABNodeIndication.c | 53 +
src/asn/ngap/ASN_NGAP_IABNodeIndication.h | 53 +
.../ngap/ASN_NGAP_IMSVoiceSupportIndicator.c | 55 +
.../ngap/ASN_NGAP_IMSVoiceSupportIndicator.h | 54 +
src/asn/ngap/ASN_NGAP_ImmediateMDTNr.c | 162 +
src/asn/ngap/ASN_NGAP_ImmediateMDTNr.h | 66 +
...N_NGAP_IncludeBeamMeasurementsIndication.c | 53 +
...N_NGAP_IncludeBeamMeasurementsIndication.h | 53 +
src/asn/ngap/ASN_NGAP_IndexToRFSP.c | 61 +
src/asn/ngap/ASN_NGAP_IndexToRFSP.h | 44 +
...foOnRecommendedCellsAndRANNodesForPaging.c | 73 +
...foOnRecommendedCellsAndRANNodesForPaging.h | 50 +
.../ASN_NGAP_InitialContextSetupFailure.c | 50 +
.../ASN_NGAP_InitialContextSetupFailure.h | 44 +
.../ASN_NGAP_InitialContextSetupRequest.c | 50 +
.../ASN_NGAP_InitialContextSetupRequest.h | 44 +
.../ASN_NGAP_InitialContextSetupResponse.c | 50 +
.../ASN_NGAP_InitialContextSetupResponse.h | 44 +
src/asn/ngap/ASN_NGAP_InitialUEMessage.c | 50 +
src/asn/ngap/ASN_NGAP_InitialUEMessage.h | 44 +
src/asn/ngap/ASN_NGAP_InitiatingMessage.c | 1528 +
src/asn/ngap/ASN_NGAP_InitiatingMessage.h | 331 +
.../ASN_NGAP_IntegrityProtectionIndication.c | 57 +
.../ASN_NGAP_IntegrityProtectionIndication.h | 55 +
.../ngap/ASN_NGAP_IntegrityProtectionResult.c | 55 +
.../ngap/ASN_NGAP_IntegrityProtectionResult.h | 54 +
.../ASN_NGAP_IntendedNumberOfPagingAttempts.c | 61 +
.../ASN_NGAP_IntendedNumberOfPagingAttempts.h | 44 +
.../ASN_NGAP_InterSystemFailureIndication.c | 64 +
.../ASN_NGAP_InterSystemFailureIndication.h | 48 +
src/asn/ngap/ASN_NGAP_InterSystemHOReport.c | 63 +
src/asn/ngap/ASN_NGAP_InterSystemHOReport.h | 48 +
.../ASN_NGAP_InterSystemHandoverReportType.c | 75 +
.../ASN_NGAP_InterSystemHandoverReportType.h | 58 +
src/asn/ngap/ASN_NGAP_InterfacesToTrace.c | 67 +
src/asn/ngap/ASN_NGAP_InterfacesToTrace.h | 44 +
.../ASN_NGAP_IntersystemCellActivationReply.c | 103 +
.../ASN_NGAP_IntersystemCellActivationReply.h | 50 +
...SN_NGAP_IntersystemCellActivationRequest.c | 103 +
...SN_NGAP_IntersystemCellActivationRequest.h | 50 +
.../ASN_NGAP_IntersystemCellStateIndication.c | 63 +
.../ASN_NGAP_IntersystemCellStateIndication.h | 48 +
.../ASN_NGAP_IntersystemResourceStatusReply.c | 63 +
.../ASN_NGAP_IntersystemResourceStatusReply.h | 48 +
...ASN_NGAP_IntersystemResourceStatusReport.c | 63 +
...ASN_NGAP_IntersystemResourceStatusReport.h | 48 +
...SN_NGAP_IntersystemResourceStatusRequest.c | 83 +
...SN_NGAP_IntersystemResourceStatusRequest.h | 52 +
.../ASN_NGAP_IntersystemResourceThreshold.c | 61 +
.../ASN_NGAP_IntersystemResourceThreshold.h | 44 +
...NGAP_IntersystemSONConfigurationTransfer.c | 73 +
...NGAP_IntersystemSONConfigurationTransfer.h | 50 +
.../ngap/ASN_NGAP_IntersystemSONInformation.c | 64 +
.../ngap/ASN_NGAP_IntersystemSONInformation.h | 55 +
.../ASN_NGAP_IntersystemSONInformationReply.c | 75 +
.../ASN_NGAP_IntersystemSONInformationReply.h | 58 +
...ASN_NGAP_IntersystemSONInformationReport.c | 75 +
...ASN_NGAP_IntersystemSONInformationReport.h | 58 +
...SN_NGAP_IntersystemSONInformationRequest.c | 75 +
...SN_NGAP_IntersystemSONInformationRequest.h | 58 +
.../ngap/ASN_NGAP_IntersystemSONNGRANnodeID.c | 73 +
.../ngap/ASN_NGAP_IntersystemSONNGRANnodeID.h | 50 +
.../ASN_NGAP_IntersystemSONTransferType.c | 75 +
.../ASN_NGAP_IntersystemSONTransferType.h | 58 +
src/asn/ngap/ASN_NGAP_IntersystemSONeNBID.c | 73 +
src/asn/ngap/ASN_NGAP_IntersystemSONeNBID.h | 50 +
.../ngap/ASN_NGAP_IntersystemUnnecessaryHO.c | 141 +
.../ngap/ASN_NGAP_IntersystemUnnecessaryHO.h | 64 +
src/asn/ngap/ASN_NGAP_LAC.c | 62 +
src/asn/ngap/ASN_NGAP_LAC.h | 44 +
src/asn/ngap/ASN_NGAP_LAI.c | 73 +
src/asn/ngap/ASN_NGAP_LAI.h | 50 +
src/asn/ngap/ASN_NGAP_LTEM-Indication.c | 53 +
src/asn/ngap/ASN_NGAP_LTEM-Indication.h | 53 +
.../ngap/ASN_NGAP_LTEUERLFReportContainer.c | 31 +
.../ngap/ASN_NGAP_LTEUERLFReportContainer.h | 43 +
...GAP_LTEUESidelinkAggregateMaximumBitrate.c | 63 +
...GAP_LTEUESidelinkAggregateMaximumBitrate.h | 48 +
.../ngap/ASN_NGAP_LTEV2XServicesAuthorized.c | 73 +
.../ngap/ASN_NGAP_LTEV2XServicesAuthorized.h | 50 +
.../ASN_NGAP_LastVisitedCellInformation.c | 94 +
.../ASN_NGAP_LastVisitedCellInformation.h | 64 +
src/asn/ngap/ASN_NGAP_LastVisitedCellItem.c | 63 +
src/asn/ngap/ASN_NGAP_LastVisitedCellItem.h | 48 +
...SN_NGAP_LastVisitedEUTRANCellInformation.c | 31 +
...SN_NGAP_LastVisitedEUTRANCellInformation.h | 43 +
...ASN_NGAP_LastVisitedGERANCellInformation.c | 31 +
...ASN_NGAP_LastVisitedGERANCellInformation.h | 43 +
...ASN_NGAP_LastVisitedNGRANCellInformation.c | 104 +
...ASN_NGAP_LastVisitedNGRANCellInformation.h | 56 +
.../ASN_NGAP_LastVisitedPSCellInformation.c | 104 +
.../ASN_NGAP_LastVisitedPSCellInformation.h | 50 +
src/asn/ngap/ASN_NGAP_LastVisitedPSCellList.c | 50 +
src/asn/ngap/ASN_NGAP_LastVisitedPSCellList.h | 44 +
...ASN_NGAP_LastVisitedUTRANCellInformation.c | 31 +
...ASN_NGAP_LastVisitedUTRANCellInformation.h | 43 +
src/asn/ngap/ASN_NGAP_LineType.c | 55 +
src/asn/ngap/ASN_NGAP_LineType.h | 54 +
src/asn/ngap/ASN_NGAP_Links-to-log.c | 57 +
src/asn/ngap/ASN_NGAP_Links-to-log.h | 55 +
src/asn/ngap/ASN_NGAP_LocationReport.c | 50 +
src/asn/ngap/ASN_NGAP_LocationReport.h | 44 +
...ASN_NGAP_LocationReportingAdditionalInfo.c | 53 +
...ASN_NGAP_LocationReportingAdditionalInfo.h | 53 +
.../ngap/ASN_NGAP_LocationReportingControl.c | 50 +
.../ngap/ASN_NGAP_LocationReportingControl.h | 44 +
..._NGAP_LocationReportingFailureIndication.c | 50 +
..._NGAP_LocationReportingFailureIndication.h | 44 +
.../ASN_NGAP_LocationReportingReferenceID.c | 61 +
.../ASN_NGAP_LocationReportingReferenceID.h | 44 +
.../ASN_NGAP_LocationReportingRequestType.c | 94 +
.../ASN_NGAP_LocationReportingRequestType.h | 54 +
src/asn/ngap/ASN_NGAP_LoggedMDTNr.c | 127 +
src/asn/ngap/ASN_NGAP_LoggedMDTNr.h | 60 +
src/asn/ngap/ASN_NGAP_LoggedMDTTrigger.c | 74 +
src/asn/ngap/ASN_NGAP_LoggedMDTTrigger.h | 58 +
src/asn/ngap/ASN_NGAP_LoggingDuration.c | 63 +
src/asn/ngap/ASN_NGAP_LoggingDuration.h | 58 +
src/asn/ngap/ASN_NGAP_LoggingInterval.c | 73 +
src/asn/ngap/ASN_NGAP_LoggingInterval.h | 63 +
src/asn/ngap/ASN_NGAP_M1Configuration.c | 85 +
src/asn/ngap/ASN_NGAP_M1Configuration.h | 52 +
src/asn/ngap/ASN_NGAP_M1PeriodicReporting.c | 73 +
src/asn/ngap/ASN_NGAP_M1PeriodicReporting.h | 50 +
src/asn/ngap/ASN_NGAP_M1ReportingTrigger.c | 57 +
src/asn/ngap/ASN_NGAP_M1ReportingTrigger.h | 55 +
src/asn/ngap/ASN_NGAP_M1ThresholdEventA2.c | 63 +
src/asn/ngap/ASN_NGAP_M1ThresholdEventA2.h | 48 +
src/asn/ngap/ASN_NGAP_M1ThresholdType.c | 83 +
src/asn/ngap/ASN_NGAP_M1ThresholdType.h | 61 +
src/asn/ngap/ASN_NGAP_M4Configuration.c | 73 +
src/asn/ngap/ASN_NGAP_M4Configuration.h | 50 +
src/asn/ngap/ASN_NGAP_M4ReportAmountMDT.c | 67 +
src/asn/ngap/ASN_NGAP_M4ReportAmountMDT.h | 60 +
src/asn/ngap/ASN_NGAP_M4period.c | 61 +
src/asn/ngap/ASN_NGAP_M4period.h | 57 +
src/asn/ngap/ASN_NGAP_M5Configuration.c | 73 +
src/asn/ngap/ASN_NGAP_M5Configuration.h | 50 +
src/asn/ngap/ASN_NGAP_M5ReportAmountMDT.c | 67 +
src/asn/ngap/ASN_NGAP_M5ReportAmountMDT.h | 60 +
src/asn/ngap/ASN_NGAP_M5period.c | 61 +
src/asn/ngap/ASN_NGAP_M5period.h | 57 +
src/asn/ngap/ASN_NGAP_M6Configuration.c | 73 +
src/asn/ngap/ASN_NGAP_M6Configuration.h | 50 +
src/asn/ngap/ASN_NGAP_M6ReportAmountMDT.c | 67 +
src/asn/ngap/ASN_NGAP_M6ReportAmountMDT.h | 60 +
src/asn/ngap/ASN_NGAP_M6report-Interval.c | 79 +
src/asn/ngap/ASN_NGAP_M6report-Interval.h | 66 +
src/asn/ngap/ASN_NGAP_M7Configuration.c | 73 +
src/asn/ngap/ASN_NGAP_M7Configuration.h | 50 +
src/asn/ngap/ASN_NGAP_M7ReportAmountMDT.c | 67 +
src/asn/ngap/ASN_NGAP_M7ReportAmountMDT.h | 60 +
src/asn/ngap/ASN_NGAP_M7period.c | 61 +
src/asn/ngap/ASN_NGAP_M7period.h | 44 +
...iveSessionInformation-SourcetoTargetItem.c | 105 +
...iveSessionInformation-SourcetoTargetItem.h | 56 +
...iveSessionInformation-SourcetoTargetList.c | 50 +
...iveSessionInformation-SourcetoTargetList.h | 44 +
...iveSessionInformation-TargettoSourceItem.c | 74 +
...iveSessionInformation-TargettoSourceItem.h | 50 +
...iveSessionInformation-TargettoSourceList.c | 50 +
...iveSessionInformation-TargettoSourceList.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-AreaSessionID.c | 61 +
src/asn/ngap/ASN_NGAP_MBS-AreaSessionID.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-AreaTAIList.c | 50 +
src/asn/ngap/ASN_NGAP_MBS-AreaTAIList.h | 44 +
...N_NGAP_MBS-DataForwardingResponseMRBItem.c | 84 +
...N_NGAP_MBS-DataForwardingResponseMRBItem.h | 52 +
...N_NGAP_MBS-DataForwardingResponseMRBList.c | 50 +
...N_NGAP_MBS-DataForwardingResponseMRBList.h | 44 +
...P_MBS-DistributionReleaseRequestTransfer.c | 94 +
...P_MBS-DistributionReleaseRequestTransfer.h | 52 +
...GAP_MBS-DistributionSetupRequestTransfer.c | 84 +
...GAP_MBS-DistributionSetupRequestTransfer.h | 50 +
...AP_MBS-DistributionSetupResponseTransfer.c | 115 +
...AP_MBS-DistributionSetupResponseTransfer.h | 56 +
...BS-DistributionSetupUnsuccessfulTransfer.c | 94 +
...BS-DistributionSetupUnsuccessfulTransfer.h | 52 +
..._MBS-MappingandDataForwardingRequestItem.c | 84 +
..._MBS-MappingandDataForwardingRequestItem.h | 52 +
..._MBS-MappingandDataForwardingRequestList.c | 50 +
..._MBS-MappingandDataForwardingRequestList.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-QoSFlowList.c | 49 +
src/asn/ngap/ASN_NGAP_MBS-QoSFlowList.h | 42 +
.../ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupItem.c | 73 +
.../ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupItem.h | 50 +
.../ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupList.c | 50 +
.../ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupList.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-ServiceArea.c | 75 +
src/asn/ngap/ASN_NGAP_MBS-ServiceArea.h | 58 +
.../ngap/ASN_NGAP_MBS-ServiceAreaCellList.c | 50 +
.../ngap/ASN_NGAP_MBS-ServiceAreaCellList.h | 44 +
.../ASN_NGAP_MBS-ServiceAreaInformation.c | 75 +
.../ASN_NGAP_MBS-ServiceAreaInformation.h | 50 +
.../ASN_NGAP_MBS-ServiceAreaInformationItem.c | 73 +
.../ASN_NGAP_MBS-ServiceAreaInformationItem.h | 50 +
.../ASN_NGAP_MBS-ServiceAreaInformationList.c | 50 +
.../ASN_NGAP_MBS-ServiceAreaInformationList.h | 44 +
.../ngap/ASN_NGAP_MBS-ServiceAreaTAIList.c | 50 +
.../ngap/ASN_NGAP_MBS-ServiceAreaTAIList.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-SessionFSAID.c | 62 +
src/asn/ngap/ASN_NGAP_MBS-SessionFSAID.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-SessionFSAIDList.c | 49 +
src/asn/ngap/ASN_NGAP_MBS-SessionFSAIDList.h | 42 +
src/asn/ngap/ASN_NGAP_MBS-SessionID.c | 73 +
src/asn/ngap/ASN_NGAP_MBS-SessionID.h | 50 +
src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GC.c | 75 +
src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GC.h | 58 +
.../ngap/ASN_NGAP_MBS-SessionTNLInfo5GCItem.c | 73 +
.../ngap/ASN_NGAP_MBS-SessionTNLInfo5GCItem.h | 50 +
.../ngap/ASN_NGAP_MBS-SessionTNLInfo5GCList.c | 50 +
.../ngap/ASN_NGAP_MBS-SessionTNLInfo5GCList.h | 44 +
.../ngap/ASN_NGAP_MBS-SessionTNLInfoNGRAN.c | 75 +
.../ngap/ASN_NGAP_MBS-SessionTNLInfoNGRAN.h | 58 +
.../ASN_NGAP_MBS-SessionTNLInfoNGRANItem.c | 74 +
.../ASN_NGAP_MBS-SessionTNLInfoNGRANItem.h | 50 +
.../ASN_NGAP_MBS-SessionTNLInfoNGRANList.c | 50 +
.../ASN_NGAP_MBS-SessionTNLInfoNGRANList.h | 44 +
src/asn/ngap/ASN_NGAP_MBS-SupportIndicator.c | 53 +
src/asn/ngap/ASN_NGAP_MBS-SupportIndicator.h | 53 +
.../ASN_NGAP_MBSSessionFailedtoSetupItem.c | 83 +
.../ASN_NGAP_MBSSessionFailedtoSetupItem.h | 52 +
.../ASN_NGAP_MBSSessionFailedtoSetupList.c | 50 +
.../ASN_NGAP_MBSSessionFailedtoSetupList.h | 44 +
...N_NGAP_MBSSessionReleaseResponseTransfer.c | 64 +
...N_NGAP_MBSSessionReleaseResponseTransfer.h | 46 +
...NGAP_MBSSessionSetupOrModFailureTransfer.c | 74 +
...NGAP_MBSSessionSetupOrModFailureTransfer.h | 48 +
...NGAP_MBSSessionSetupOrModRequestTransfer.c | 50 +
...NGAP_MBSSessionSetupOrModRequestTransfer.h | 42 +
...GAP_MBSSessionSetupOrModResponseTransfer.c | 64 +
...GAP_MBSSessionSetupOrModResponseTransfer.h | 46 +
.../ASN_NGAP_MBSSessionSetupRequestItem.c | 84 +
.../ASN_NGAP_MBSSessionSetupRequestItem.h | 52 +
.../ASN_NGAP_MBSSessionSetupRequestList.c | 50 +
.../ASN_NGAP_MBSSessionSetupRequestList.h | 44 +
.../ASN_NGAP_MBSSessionSetupResponseItem.c | 73 +
.../ASN_NGAP_MBSSessionSetupResponseItem.h | 50 +
.../ASN_NGAP_MBSSessionSetupResponseList.c | 50 +
.../ASN_NGAP_MBSSessionSetupResponseList.h | 44 +
..._NGAP_MBSSessionSetuporModifyRequestItem.c | 95 +
..._NGAP_MBSSessionSetuporModifyRequestItem.h | 54 +
..._NGAP_MBSSessionSetuporModifyRequestList.c | 50 +
..._NGAP_MBSSessionSetuporModifyRequestList.h | 44 +
src/asn/ngap/ASN_NGAP_MBSSessionStatus.c | 55 +
src/asn/ngap/ASN_NGAP_MBSSessionStatus.h | 54 +
.../ngap/ASN_NGAP_MBSSessionToReleaseItem.c | 73 +
.../ngap/ASN_NGAP_MBSSessionToReleaseItem.h | 50 +
.../ngap/ASN_NGAP_MBSSessionToReleaseList.c | 50 +
.../ngap/ASN_NGAP_MBSSessionToReleaseList.h | 44 +
src/asn/ngap/ASN_NGAP_MDT-Activation.c | 57 +
src/asn/ngap/ASN_NGAP_MDT-Activation.h | 55 +
src/asn/ngap/ASN_NGAP_MDT-AlignmentInfo.c | 63 +
src/asn/ngap/ASN_NGAP_MDT-AlignmentInfo.h | 55 +
.../ngap/ASN_NGAP_MDT-Configuration-EUTRA.c | 94 +
.../ngap/ASN_NGAP_MDT-Configuration-EUTRA.h | 54 +
src/asn/ngap/ASN_NGAP_MDT-Configuration-NR.c | 94 +
src/asn/ngap/ASN_NGAP_MDT-Configuration-NR.h | 54 +
src/asn/ngap/ASN_NGAP_MDT-Configuration.c | 75 +
src/asn/ngap/ASN_NGAP_MDT-Configuration.h | 50 +
src/asn/ngap/ASN_NGAP_MDT-Location-Info.c | 63 +
src/asn/ngap/ASN_NGAP_MDT-Location-Info.h | 48 +
.../ngap/ASN_NGAP_MDT-Location-Information.c | 67 +
.../ngap/ASN_NGAP_MDT-Location-Information.h | 44 +
src/asn/ngap/ASN_NGAP_MDTModeEutra.c | 31 +
src/asn/ngap/ASN_NGAP_MDTModeEutra.h | 43 +
src/asn/ngap/ASN_NGAP_MDTModeNr.c | 75 +
src/asn/ngap/ASN_NGAP_MDTModeNr.h | 58 +
src/asn/ngap/ASN_NGAP_MDTPLMNList.c | 49 +
src/asn/ngap/ASN_NGAP_MDTPLMNList.h | 42 +
.../ngap/ASN_NGAP_MDTPLMNModificationList.c | 49 +
.../ngap/ASN_NGAP_MDTPLMNModificationList.h | 42 +
src/asn/ngap/ASN_NGAP_MICOModeIndication.c | 53 +
src/asn/ngap/ASN_NGAP_MICOModeIndication.h | 53 +
src/asn/ngap/ASN_NGAP_MRB-ID.c | 61 +
src/asn/ngap/ASN_NGAP_MRB-ID.h | 44 +
.../ngap/ASN_NGAP_MRB-ProgressInformation.c | 133 +
.../ngap/ASN_NGAP_MRB-ProgressInformation.h | 57 +
src/asn/ngap/ASN_NGAP_MaskedIMEISV.c | 67 +
src/asn/ngap/ASN_NGAP_MaskedIMEISV.h | 44 +
.../ngap/ASN_NGAP_MaxNrofRS-IndexesToReport.c | 61 +
.../ngap/ASN_NGAP_MaxNrofRS-IndexesToReport.h | 44 +
.../ngap/ASN_NGAP_MaximumDataBurstVolume.c | 61 +
.../ngap/ASN_NGAP_MaximumDataBurstVolume.h | 44 +
...N_NGAP_MaximumIntegrityProtectedDataRate.c | 55 +
...N_NGAP_MaximumIntegrityProtectedDataRate.h | 54 +
...ASN_NGAP_MeasurementThresholdL1LoggedMDT.c | 73 +
...ASN_NGAP_MeasurementThresholdL1LoggedMDT.h | 58 +
.../ngap/ASN_NGAP_MeasurementsToActivate.c | 67 +
.../ngap/ASN_NGAP_MeasurementsToActivate.h | 44 +
src/asn/ngap/ASN_NGAP_MessageIdentifier.c | 67 +
src/asn/ngap/ASN_NGAP_MessageIdentifier.h | 44 +
src/asn/ngap/ASN_NGAP_MicoAllPLMN.c | 53 +
src/asn/ngap/ASN_NGAP_MicoAllPLMN.h | 53 +
src/asn/ngap/ASN_NGAP_MobilityInformation.c | 67 +
src/asn/ngap/ASN_NGAP_MobilityInformation.h | 44 +
.../ngap/ASN_NGAP_MobilityRestrictionList.c | 107 +
.../ngap/ASN_NGAP_MobilityRestrictionList.h | 56 +
src/asn/ngap/ASN_NGAP_MulticastGroupPaging.c | 50 +
src/asn/ngap/ASN_NGAP_MulticastGroupPaging.h | 44 +
.../ngap/ASN_NGAP_MulticastGroupPagingArea.c | 63 +
.../ngap/ASN_NGAP_MulticastGroupPagingArea.h | 48 +
.../ASN_NGAP_MulticastGroupPagingAreaItem.c | 74 +
.../ASN_NGAP_MulticastGroupPagingAreaItem.h | 50 +
.../ASN_NGAP_MulticastGroupPagingAreaList.c | 50 +
.../ASN_NGAP_MulticastGroupPagingAreaList.h | 44 +
...N_NGAP_MulticastSessionActivationFailure.c | 50 +
...N_NGAP_MulticastSessionActivationFailure.h | 44 +
...N_NGAP_MulticastSessionActivationRequest.c | 50 +
...N_NGAP_MulticastSessionActivationRequest.h | 44 +
...ulticastSessionActivationRequestTransfer.c | 63 +
...ulticastSessionActivationRequestTransfer.h | 46 +
..._NGAP_MulticastSessionActivationResponse.c | 50 +
..._NGAP_MulticastSessionActivationResponse.h | 44 +
...NGAP_MulticastSessionDeactivationRequest.c | 50 +
...NGAP_MulticastSessionDeactivationRequest.h | 44 +
...ticastSessionDeactivationRequestTransfer.c | 63 +
...ticastSessionDeactivationRequestTransfer.h | 46 +
...GAP_MulticastSessionDeactivationResponse.c | 50 +
...GAP_MulticastSessionDeactivationResponse.h | 44 +
.../ASN_NGAP_MulticastSessionUpdateFailure.c | 50 +
.../ASN_NGAP_MulticastSessionUpdateFailure.h | 44 +
.../ASN_NGAP_MulticastSessionUpdateRequest.c | 50 +
.../ASN_NGAP_MulticastSessionUpdateRequest.h | 44 +
...AP_MulticastSessionUpdateRequestTransfer.c | 50 +
...AP_MulticastSessionUpdateRequestTransfer.h | 42 +
.../ASN_NGAP_MulticastSessionUpdateResponse.c | 50 +
.../ASN_NGAP_MulticastSessionUpdateResponse.h | 44 +
src/asn/ngap/ASN_NGAP_N3IWF-ID.c | 99 +
src/asn/ngap/ASN_NGAP_N3IWF-ID.h | 55 +
src/asn/ngap/ASN_NGAP_NAS-PDU.c | 31 +
src/asn/ngap/ASN_NGAP_NAS-PDU.h | 43 +
.../ngap/ASN_NGAP_NASNonDeliveryIndication.c | 50 +
.../ngap/ASN_NGAP_NASNonDeliveryIndication.h | 44 +
.../ASN_NGAP_NASSecurityParametersFromNGRAN.c | 31 +
.../ASN_NGAP_NASSecurityParametersFromNGRAN.h | 43 +
.../ngap/ASN_NGAP_NB-IoT-DefaultPagingDRX.c | 59 +
.../ngap/ASN_NGAP_NB-IoT-DefaultPagingDRX.h | 56 +
.../ngap/ASN_NGAP_NB-IoT-Paging-TimeWindow.c | 83 +
.../ngap/ASN_NGAP_NB-IoT-Paging-TimeWindow.h | 68 +
.../ngap/ASN_NGAP_NB-IoT-Paging-eDRXCycle.c | 79 +
.../ngap/ASN_NGAP_NB-IoT-Paging-eDRXCycle.h | 66 +
.../ngap/ASN_NGAP_NB-IoT-Paging-eDRXInfo.c | 73 +
.../ngap/ASN_NGAP_NB-IoT-Paging-eDRXInfo.h | 50 +
src/asn/ngap/ASN_NGAP_NB-IoT-PagingDRX.c | 63 +
src/asn/ngap/ASN_NGAP_NB-IoT-PagingDRX.h | 58 +
src/asn/ngap/ASN_NGAP_NB-IoT-UEPriority.c | 61 +
src/asn/ngap/ASN_NGAP_NB-IoT-UEPriority.h | 44 +
src/asn/ngap/ASN_NGAP_NGAP-PDU.c | 75 +
src/asn/ngap/ASN_NGAP_NGAP-PDU.h | 61 +
...NGAP_NGAPIESupportInformationRequestItem.c | 63 +
...NGAP_NGAPIESupportInformationRequestItem.h | 48 +
...NGAP_NGAPIESupportInformationRequestList.c | 50 +
...NGAP_NGAPIESupportInformationRequestList.h | 44 +
...GAP_NGAPIESupportInformationResponseItem.c | 179 +
...GAP_NGAPIESupportInformationResponseItem.h | 69 +
...GAP_NGAPIESupportInformationResponseList.c | 50 +
...GAP_NGAPIESupportInformationResponseList.h | 44 +
src/asn/ngap/ASN_NGAP_NGRAN-CGI.c | 75 +
src/asn/ngap/ASN_NGAP_NGRAN-CGI.h | 58 +
src/asn/ngap/ASN_NGAP_NGRAN-CellReportItem.c | 104 +
src/asn/ngap/ASN_NGAP_NGRAN-CellReportItem.h | 56 +
src/asn/ngap/ASN_NGAP_NGRAN-CellReportList.c | 50 +
src/asn/ngap/ASN_NGAP_NGRAN-CellReportList.h | 44 +
.../ngap/ASN_NGAP_NGRAN-CellToReportItem.c | 63 +
.../ngap/ASN_NGAP_NGRAN-CellToReportItem.h | 48 +
.../ngap/ASN_NGAP_NGRAN-CellToReportList.c | 50 +
.../ngap/ASN_NGAP_NGRAN-CellToReportList.h | 44 +
.../ngap/ASN_NGAP_NGRAN-NoofRRCConnections.c | 61 +
.../ngap/ASN_NGAP_NGRAN-NoofRRCConnections.h | 44 +
.../ngap/ASN_NGAP_NGRAN-NumberOfActiveUEs.c | 61 +
.../ngap/ASN_NGAP_NGRAN-NumberOfActiveUEs.h | 44 +
.../ngap/ASN_NGAP_NGRAN-RadioResourceStatus.c | 293 +
.../ngap/ASN_NGAP_NGRAN-RadioResourceStatus.h | 53 +
.../ngap/ASN_NGAP_NGRAN-ReportingStatusIEs.c | 63 +
.../ngap/ASN_NGAP_NGRAN-ReportingStatusIEs.h | 48 +
.../ngap/ASN_NGAP_NGRAN-ReportingSystemIEs.c | 63 +
.../ngap/ASN_NGAP_NGRAN-ReportingSystemIEs.h | 48 +
...SN_NGAP_NGRAN-TNLAssociationToRemoveItem.c | 74 +
...SN_NGAP_NGRAN-TNLAssociationToRemoveItem.h | 46 +
...SN_NGAP_NGRAN-TNLAssociationToRemoveList.c | 50 +
...SN_NGAP_NGRAN-TNLAssociationToRemoveList.h | 44 +
src/asn/ngap/ASN_NGAP_NGRANTraceID.c | 62 +
src/asn/ngap/ASN_NGAP_NGRANTraceID.h | 44 +
src/asn/ngap/ASN_NGAP_NGReset.c | 50 +
src/asn/ngap/ASN_NGAP_NGReset.h | 44 +
src/asn/ngap/ASN_NGAP_NGResetAcknowledge.c | 50 +
src/asn/ngap/ASN_NGAP_NGResetAcknowledge.h | 44 +
src/asn/ngap/ASN_NGAP_NGSetupFailure.c | 50 +
src/asn/ngap/ASN_NGAP_NGSetupFailure.h | 44 +
src/asn/ngap/ASN_NGAP_NGSetupRequest.c | 50 +
src/asn/ngap/ASN_NGAP_NGSetupRequest.h | 44 +
src/asn/ngap/ASN_NGAP_NGSetupResponse.c | 50 +
src/asn/ngap/ASN_NGAP_NGSetupResponse.h | 44 +
src/asn/ngap/ASN_NGAP_NID.c | 67 +
src/asn/ngap/ASN_NGAP_NID.h | 44 +
src/asn/ngap/ASN_NGAP_NPN-AccessInformation.c | 64 +
src/asn/ngap/ASN_NGAP_NPN-AccessInformation.h | 55 +
.../ngap/ASN_NGAP_NPN-MobilityInformation.c | 75 +
.../ngap/ASN_NGAP_NPN-MobilityInformation.h | 58 +
...ASN_NGAP_NPN-PagingAssistanceInformation.c | 64 +
...ASN_NGAP_NPN-PagingAssistanceInformation.h | 55 +
src/asn/ngap/ASN_NGAP_NPN-Support.c | 63 +
src/asn/ngap/ASN_NGAP_NPN-Support.h | 55 +
src/asn/ngap/ASN_NGAP_NR-CGI.c | 73 +
src/asn/ngap/ASN_NGAP_NR-CGI.h | 50 +
src/asn/ngap/ASN_NGAP_NR-CGIList.c | 50 +
src/asn/ngap/ASN_NGAP_NR-CGIList.h | 44 +
src/asn/ngap/ASN_NGAP_NR-CGIListForWarning.c | 50 +
src/asn/ngap/ASN_NGAP_NR-CGIListForWarning.h | 44 +
src/asn/ngap/ASN_NGAP_NR-PCI.c | 61 +
src/asn/ngap/ASN_NGAP_NR-PCI.h | 44 +
src/asn/ngap/ASN_NGAP_NR-Paging-Time-Window.c | 115 +
src/asn/ngap/ASN_NGAP_NR-Paging-Time-Window.h | 84 +
src/asn/ngap/ASN_NGAP_NR-Paging-eDRX-Cycle.c | 77 +
src/asn/ngap/ASN_NGAP_NR-Paging-eDRX-Cycle.h | 65 +
.../ngap/ASN_NGAP_NR-PagingeDRXInformation.c | 73 +
.../ngap/ASN_NGAP_NR-PagingeDRXInformation.h | 50 +
src/asn/ngap/ASN_NGAP_NRARFCN.c | 61 +
src/asn/ngap/ASN_NGAP_NRARFCN.h | 44 +
src/asn/ngap/ASN_NGAP_NRCellIdentity.c | 67 +
src/asn/ngap/ASN_NGAP_NRCellIdentity.h | 44 +
src/asn/ngap/ASN_NGAP_NRFrequencyBand-List.c | 50 +
src/asn/ngap/ASN_NGAP_NRFrequencyBand-List.h | 44 +
src/asn/ngap/ASN_NGAP_NRFrequencyBand.c | 61 +
src/asn/ngap/ASN_NGAP_NRFrequencyBand.h | 44 +
src/asn/ngap/ASN_NGAP_NRFrequencyBandItem.c | 63 +
src/asn/ngap/ASN_NGAP_NRFrequencyBandItem.h | 48 +
src/asn/ngap/ASN_NGAP_NRFrequencyInfo.c | 73 +
src/asn/ngap/ASN_NGAP_NRFrequencyInfo.h | 50 +
.../ngap/ASN_NGAP_NRMobilityHistoryReport.c | 31 +
.../ngap/ASN_NGAP_NRMobilityHistoryReport.h | 43 +
src/asn/ngap/ASN_NGAP_NRNTNTAIInformation.c | 83 +
src/asn/ngap/ASN_NGAP_NRNTNTAIInformation.h | 52 +
src/asn/ngap/ASN_NGAP_NRPPa-PDU.c | 31 +
src/asn/ngap/ASN_NGAP_NRPPa-PDU.h | 43 +
.../ngap/ASN_NGAP_NRUERLFReportContainer.c | 31 +
.../ngap/ASN_NGAP_NRUERLFReportContainer.h | 43 +
...NGAP_NRUESidelinkAggregateMaximumBitrate.c | 63 +
...NGAP_NRUESidelinkAggregateMaximumBitrate.h | 48 +
.../ngap/ASN_NGAP_NRV2XServicesAuthorized.c | 73 +
.../ngap/ASN_NGAP_NRV2XServicesAuthorized.h | 50 +
.../ngap/ASN_NGAP_NRencryptionAlgorithms.c | 67 +
.../ngap/ASN_NGAP_NRencryptionAlgorithms.h | 44 +
...ASN_NGAP_NRintegrityProtectionAlgorithms.c | 67 +
...ASN_NGAP_NRintegrityProtectionAlgorithms.h | 44 +
src/asn/ngap/ASN_NGAP_NSAG-ID.c | 61 +
src/asn/ngap/ASN_NGAP_NSAG-ID.h | 44 +
src/asn/ngap/ASN_NGAP_NetworkInstance.c | 61 +
src/asn/ngap/ASN_NGAP_NetworkInstance.h | 44 +
src/asn/ngap/ASN_NGAP_NewSecurityContextInd.c | 53 +
src/asn/ngap/ASN_NGAP_NewSecurityContextInd.h | 53 +
src/asn/ngap/ASN_NGAP_NextHopChainingCount.c | 61 +
src/asn/ngap/ASN_NGAP_NextHopChainingCount.h | 44 +
src/asn/ngap/ASN_NGAP_NextPagingAreaScope.c | 55 +
src/asn/ngap/ASN_NGAP_NextPagingAreaScope.h | 54 +
src/asn/ngap/ASN_NGAP_NgENB-ID.c | 191 +
src/asn/ngap/ASN_NGAP_NgENB-ID.h | 59 +
.../ngap/ASN_NGAP_NonDynamic5QIDescriptor.c | 93 +
.../ngap/ASN_NGAP_NonDynamic5QIDescriptor.h | 54 +
src/asn/ngap/ASN_NGAP_NotAllowedTACs.c | 49 +
src/asn/ngap/ASN_NGAP_NotAllowedTACs.h | 42 +
src/asn/ngap/ASN_NGAP_NotificationCause.c | 55 +
src/asn/ngap/ASN_NGAP_NotificationCause.h | 54 +
src/asn/ngap/ASN_NGAP_NotificationCell-Item.c | 121 +
src/asn/ngap/ASN_NGAP_NotificationCell-Item.h | 60 +
src/asn/ngap/ASN_NGAP_NotificationCellList.c | 50 +
src/asn/ngap/ASN_NGAP_NotificationCellList.h | 44 +
src/asn/ngap/ASN_NGAP_NotificationControl.c | 53 +
src/asn/ngap/ASN_NGAP_NotificationControl.h | 53 +
src/asn/ngap/ASN_NGAP_NotifySourceNGRANNode.c | 53 +
src/asn/ngap/ASN_NGAP_NotifySourceNGRANNode.h | 53 +
src/asn/ngap/ASN_NGAP_NumberOfBroadcasts.c | 61 +
src/asn/ngap/ASN_NGAP_NumberOfBroadcasts.h | 44 +
.../ASN_NGAP_NumberOfBroadcastsRequested.c | 61 +
.../ASN_NGAP_NumberOfBroadcastsRequested.h | 44 +
..._NGAP_NumberOfMeasurementReportingLevels.c | 63 +
..._NGAP_NumberOfMeasurementReportingLevels.h | 58 +
src/asn/ngap/ASN_NGAP_OnboardingSupport.c | 53 +
src/asn/ngap/ASN_NGAP_OnboardingSupport.h | 53 +
src/asn/ngap/ASN_NGAP_OverloadAction.c | 59 +
src/asn/ngap/ASN_NGAP_OverloadAction.h | 56 +
src/asn/ngap/ASN_NGAP_OverloadResponse.c | 63 +
src/asn/ngap/ASN_NGAP_OverloadResponse.h | 55 +
src/asn/ngap/ASN_NGAP_OverloadStart.c | 50 +
src/asn/ngap/ASN_NGAP_OverloadStart.h | 44 +
.../ngap/ASN_NGAP_OverloadStartNSSAIItem.c | 84 +
.../ngap/ASN_NGAP_OverloadStartNSSAIItem.h | 52 +
.../ngap/ASN_NGAP_OverloadStartNSSAIList.c | 50 +
.../ngap/ASN_NGAP_OverloadStartNSSAIList.h | 44 +
src/asn/ngap/ASN_NGAP_OverloadStop.c | 50 +
src/asn/ngap/ASN_NGAP_OverloadStop.h | 44 +
src/asn/ngap/ASN_NGAP_PC5FlowBitRates.c | 73 +
src/asn/ngap/ASN_NGAP_PC5FlowBitRates.h | 49 +
src/asn/ngap/ASN_NGAP_PC5QoSFlowItem.c | 84 +
src/asn/ngap/ASN_NGAP_PC5QoSFlowItem.h | 52 +
src/asn/ngap/ASN_NGAP_PC5QoSFlowList.c | 50 +
src/asn/ngap/ASN_NGAP_PC5QoSFlowList.h | 44 +
src/asn/ngap/ASN_NGAP_PC5QoSParameters.c | 73 +
src/asn/ngap/ASN_NGAP_PC5QoSParameters.h | 50 +
src/asn/ngap/ASN_NGAP_PCIListForMDT.c | 49 +
src/asn/ngap/ASN_NGAP_PCIListForMDT.h | 42 +
...N_NGAP_PDUSessionAggregateMaximumBitRate.c | 73 +
...N_NGAP_PDUSessionAggregateMaximumBitRate.h | 49 +
src/asn/ngap/ASN_NGAP_PDUSessionID.c | 61 +
src/asn/ngap/ASN_NGAP_PDUSessionID.h | 44 +
src/asn/ngap/ASN_NGAP_PDUSessionPairID.c | 61 +
src/asn/ngap/ASN_NGAP_PDUSessionPairID.h | 44 +
.../ASN_NGAP_PDUSessionResourceAdmittedItem.c | 99 +
.../ASN_NGAP_PDUSessionResourceAdmittedItem.h | 50 +
.../ASN_NGAP_PDUSessionResourceAdmittedList.c | 50 +
.../ASN_NGAP_PDUSessionResourceAdmittedList.h | 44 +
...USessionResourceFailedToModifyItemModCfm.c | 99 +
...USessionResourceFailedToModifyItemModCfm.h | 50 +
...USessionResourceFailedToModifyItemModRes.c | 99 +
...USessionResourceFailedToModifyItemModRes.h | 50 +
...USessionResourceFailedToModifyListModCfm.c | 50 +
...USessionResourceFailedToModifyListModCfm.h | 44 +
...USessionResourceFailedToModifyListModRes.c | 50 +
...USessionResourceFailedToModifyListModRes.h | 44 +
...USessionResourceFailedToResumeItemRESReq.c | 73 +
...USessionResourceFailedToResumeItemRESReq.h | 50 +
...USessionResourceFailedToResumeItemRESRes.c | 73 +
...USessionResourceFailedToResumeItemRESRes.h | 50 +
...USessionResourceFailedToResumeListRESReq.c | 50 +
...USessionResourceFailedToResumeListRESReq.h | 44 +
...USessionResourceFailedToResumeListRESRes.c | 50 +
...USessionResourceFailedToResumeListRESRes.h | 44 +
...USessionResourceFailedToSetupItemCxtFail.c | 99 +
...USessionResourceFailedToSetupItemCxtFail.h | 50 +
...DUSessionResourceFailedToSetupItemCxtRes.c | 99 +
...DUSessionResourceFailedToSetupItemCxtRes.h | 50 +
...PDUSessionResourceFailedToSetupItemHOAck.c | 99 +
...PDUSessionResourceFailedToSetupItemHOAck.h | 50 +
...PDUSessionResourceFailedToSetupItemPSReq.c | 99 +
...PDUSessionResourceFailedToSetupItemPSReq.h | 50 +
...PDUSessionResourceFailedToSetupItemSURes.c | 99 +
...PDUSessionResourceFailedToSetupItemSURes.h | 50 +
...USessionResourceFailedToSetupListCxtFail.c | 50 +
...USessionResourceFailedToSetupListCxtFail.h | 44 +
...DUSessionResourceFailedToSetupListCxtRes.c | 50 +
...DUSessionResourceFailedToSetupListCxtRes.h | 44 +
...PDUSessionResourceFailedToSetupListHOAck.c | 50 +
...PDUSessionResourceFailedToSetupListHOAck.h | 44 +
...PDUSessionResourceFailedToSetupListPSReq.c | 50 +
...PDUSessionResourceFailedToSetupListPSReq.h | 44 +
...PDUSessionResourceFailedToSetupListSURes.c | 50 +
...PDUSessionResourceFailedToSetupListSURes.h | 44 +
.../ASN_NGAP_PDUSessionResourceHandoverItem.c | 99 +
.../ASN_NGAP_PDUSessionResourceHandoverItem.h | 50 +
.../ASN_NGAP_PDUSessionResourceHandoverList.c | 50 +
.../ASN_NGAP_PDUSessionResourceHandoverList.h | 44 +
...N_NGAP_PDUSessionResourceInformationItem.c | 84 +
...N_NGAP_PDUSessionResourceInformationItem.h | 52 +
...N_NGAP_PDUSessionResourceInformationList.c | 50 +
...N_NGAP_PDUSessionResourceInformationList.h | 44 +
...ASN_NGAP_PDUSessionResourceItemCxtRelCpl.c | 63 +
...ASN_NGAP_PDUSessionResourceItemCxtRelCpl.h | 48 +
...ASN_NGAP_PDUSessionResourceItemCxtRelReq.c | 63 +
...ASN_NGAP_PDUSessionResourceItemCxtRelReq.h | 48 +
.../ASN_NGAP_PDUSessionResourceItemHORqd.c | 99 +
.../ASN_NGAP_PDUSessionResourceItemHORqd.h | 50 +
...ASN_NGAP_PDUSessionResourceListCxtRelCpl.c | 50 +
...ASN_NGAP_PDUSessionResourceListCxtRelCpl.h | 44 +
...ASN_NGAP_PDUSessionResourceListCxtRelReq.c | 50 +
...ASN_NGAP_PDUSessionResourceListCxtRelReq.h | 44 +
.../ASN_NGAP_PDUSessionResourceListHORqd.c | 50 +
.../ASN_NGAP_PDUSessionResourceListHORqd.h | 44 +
...ASN_NGAP_PDUSessionResourceModifyConfirm.c | 50 +
...ASN_NGAP_PDUSessionResourceModifyConfirm.h | 44 +
..._PDUSessionResourceModifyConfirmTransfer.c | 95 +
..._PDUSessionResourceModifyConfirmTransfer.h | 52 +
..._NGAP_PDUSessionResourceModifyIndication.c | 50 +
..._NGAP_PDUSessionResourceModifyIndication.h | 44 +
...USessionResourceModifyIndicationTransfer.c | 74 +
...USessionResourceModifyIndicationTransfer.h | 48 +
...urceModifyIndicationUnsuccessfulTransfer.c | 63 +
...urceModifyIndicationUnsuccessfulTransfer.h | 46 +
..._NGAP_PDUSessionResourceModifyItemModCfm.c | 99 +
..._NGAP_PDUSessionResourceModifyItemModCfm.h | 50 +
..._NGAP_PDUSessionResourceModifyItemModInd.c | 99 +
..._NGAP_PDUSessionResourceModifyItemModInd.h | 50 +
..._NGAP_PDUSessionResourceModifyItemModReq.c | 109 +
..._NGAP_PDUSessionResourceModifyItemModReq.h | 52 +
..._NGAP_PDUSessionResourceModifyItemModRes.c | 99 +
..._NGAP_PDUSessionResourceModifyItemModRes.h | 50 +
..._NGAP_PDUSessionResourceModifyListModCfm.c | 50 +
..._NGAP_PDUSessionResourceModifyListModCfm.h | 44 +
..._NGAP_PDUSessionResourceModifyListModInd.c | 50 +
..._NGAP_PDUSessionResourceModifyListModInd.h | 44 +
..._NGAP_PDUSessionResourceModifyListModReq.c | 50 +
..._NGAP_PDUSessionResourceModifyListModReq.h | 44 +
..._NGAP_PDUSessionResourceModifyListModRes.c | 50 +
..._NGAP_PDUSessionResourceModifyListModRes.h | 44 +
...ASN_NGAP_PDUSessionResourceModifyRequest.c | 50 +
...ASN_NGAP_PDUSessionResourceModifyRequest.h | 44 +
..._PDUSessionResourceModifyRequestTransfer.c | 50 +
..._PDUSessionResourceModifyRequestTransfer.h | 42 +
...SN_NGAP_PDUSessionResourceModifyResponse.c | 50 +
...SN_NGAP_PDUSessionResourceModifyResponse.h | 44 +
...PDUSessionResourceModifyResponseTransfer.c | 107 +
...PDUSessionResourceModifyResponseTransfer.h | 53 +
...essionResourceModifyUnsuccessfulTransfer.c | 74 +
...essionResourceModifyUnsuccessfulTransfer.h | 48 +
.../ngap/ASN_NGAP_PDUSessionResourceNotify.c | 50 +
.../ngap/ASN_NGAP_PDUSessionResourceNotify.h | 44 +
.../ASN_NGAP_PDUSessionResourceNotifyItem.c | 99 +
.../ASN_NGAP_PDUSessionResourceNotifyItem.h | 50 +
.../ASN_NGAP_PDUSessionResourceNotifyList.c | 50 +
.../ASN_NGAP_PDUSessionResourceNotifyList.h | 44 +
...PDUSessionResourceNotifyReleasedTransfer.c | 63 +
...PDUSessionResourceNotifyReleasedTransfer.h | 46 +
...SN_NGAP_PDUSessionResourceNotifyTransfer.c | 75 +
...SN_NGAP_PDUSessionResourceNotifyTransfer.h | 48 +
...SN_NGAP_PDUSessionResourceReleaseCommand.c | 50 +
...SN_NGAP_PDUSessionResourceReleaseCommand.h | 44 +
...PDUSessionResourceReleaseCommandTransfer.c | 63 +
...PDUSessionResourceReleaseCommandTransfer.h | 46 +
...N_NGAP_PDUSessionResourceReleaseResponse.c | 50 +
...N_NGAP_PDUSessionResourceReleaseResponse.h | 44 +
...DUSessionResourceReleaseResponseTransfer.c | 53 +
...DUSessionResourceReleaseResponseTransfer.h | 44 +
...N_NGAP_PDUSessionResourceReleasedItemNot.c | 99 +
...N_NGAP_PDUSessionResourceReleasedItemNot.h | 50 +
...NGAP_PDUSessionResourceReleasedItemPSAck.c | 99 +
...NGAP_PDUSessionResourceReleasedItemPSAck.h | 50 +
...GAP_PDUSessionResourceReleasedItemPSFail.c | 99 +
...GAP_PDUSessionResourceReleasedItemPSFail.h | 50 +
...GAP_PDUSessionResourceReleasedItemRelRes.c | 99 +
...GAP_PDUSessionResourceReleasedItemRelRes.h | 50 +
...N_NGAP_PDUSessionResourceReleasedListNot.c | 50 +
...N_NGAP_PDUSessionResourceReleasedListNot.h | 44 +
...NGAP_PDUSessionResourceReleasedListPSAck.c | 50 +
...NGAP_PDUSessionResourceReleasedListPSAck.h | 44 +
...GAP_PDUSessionResourceReleasedListPSFail.c | 50 +
...GAP_PDUSessionResourceReleasedListPSFail.h | 44 +
...GAP_PDUSessionResourceReleasedListRelRes.c | 50 +
...GAP_PDUSessionResourceReleasedListRelRes.h | 44 +
..._NGAP_PDUSessionResourceResumeItemRESReq.c | 99 +
..._NGAP_PDUSessionResourceResumeItemRESReq.h | 50 +
..._NGAP_PDUSessionResourceResumeItemRESRes.c | 99 +
..._NGAP_PDUSessionResourceResumeItemRESRes.h | 50 +
..._NGAP_PDUSessionResourceResumeListRESReq.c | 50 +
..._NGAP_PDUSessionResourceResumeListRESReq.h | 44 +
..._NGAP_PDUSessionResourceResumeListRESRes.c | 50 +
..._NGAP_PDUSessionResourceResumeListRESRes.h | 44 +
..._PDUSessionResourceSecondaryRATUsageItem.c | 99 +
..._PDUSessionResourceSecondaryRATUsageItem.h | 50 +
..._PDUSessionResourceSecondaryRATUsageList.c | 50 +
..._PDUSessionResourceSecondaryRATUsageList.h | 44 +
...N_NGAP_PDUSessionResourceSetupItemCxtReq.c | 119 +
...N_NGAP_PDUSessionResourceSetupItemCxtReq.h | 54 +
...N_NGAP_PDUSessionResourceSetupItemCxtRes.c | 99 +
...N_NGAP_PDUSessionResourceSetupItemCxtRes.h | 50 +
...SN_NGAP_PDUSessionResourceSetupItemHOReq.c | 109 +
...SN_NGAP_PDUSessionResourceSetupItemHOReq.h | 52 +
...SN_NGAP_PDUSessionResourceSetupItemSUReq.c | 119 +
...SN_NGAP_PDUSessionResourceSetupItemSUReq.h | 54 +
...SN_NGAP_PDUSessionResourceSetupItemSURes.c | 99 +
...SN_NGAP_PDUSessionResourceSetupItemSURes.h | 50 +
...N_NGAP_PDUSessionResourceSetupListCxtReq.c | 50 +
...N_NGAP_PDUSessionResourceSetupListCxtReq.h | 44 +
...N_NGAP_PDUSessionResourceSetupListCxtRes.c | 50 +
...N_NGAP_PDUSessionResourceSetupListCxtRes.h | 44 +
...SN_NGAP_PDUSessionResourceSetupListHOReq.c | 50 +
...SN_NGAP_PDUSessionResourceSetupListHOReq.h | 44 +
...SN_NGAP_PDUSessionResourceSetupListSUReq.c | 50 +
...SN_NGAP_PDUSessionResourceSetupListSUReq.h | 44 +
...SN_NGAP_PDUSessionResourceSetupListSURes.c | 50 +
...SN_NGAP_PDUSessionResourceSetupListSURes.h | 44 +
.../ASN_NGAP_PDUSessionResourceSetupRequest.c | 50 +
.../ASN_NGAP_PDUSessionResourceSetupRequest.h | 44 +
...P_PDUSessionResourceSetupRequestTransfer.c | 50 +
...P_PDUSessionResourceSetupRequestTransfer.h | 42 +
...ASN_NGAP_PDUSessionResourceSetupResponse.c | 50 +
...ASN_NGAP_PDUSessionResourceSetupResponse.h | 44 +
..._PDUSessionResourceSetupResponseTransfer.c | 96 +
..._PDUSessionResourceSetupResponseTransfer.h | 52 +
...SessionResourceSetupUnsuccessfulTransfer.c | 74 +
...SessionResourceSetupUnsuccessfulTransfer.h | 48 +
...NGAP_PDUSessionResourceSuspendItemSUSReq.c | 99 +
...NGAP_PDUSessionResourceSuspendItemSUSReq.h | 50 +
...NGAP_PDUSessionResourceSuspendListSUSReq.c | 50 +
...NGAP_PDUSessionResourceSuspendListSUSReq.h | 44 +
.../ASN_NGAP_PDUSessionResourceSwitchedItem.c | 99 +
.../ASN_NGAP_PDUSessionResourceSwitchedItem.h | 50 +
.../ASN_NGAP_PDUSessionResourceSwitchedList.c | 50 +
.../ASN_NGAP_PDUSessionResourceSwitchedList.h | 44 +
...GAP_PDUSessionResourceToBeSwitchedDLItem.c | 99 +
...GAP_PDUSessionResourceToBeSwitchedDLItem.h | 50 +
...GAP_PDUSessionResourceToBeSwitchedDLList.c | 50 +
...GAP_PDUSessionResourceToBeSwitchedDLList.h | 44 +
...GAP_PDUSessionResourceToReleaseItemHOCmd.c | 99 +
...GAP_PDUSessionResourceToReleaseItemHOCmd.h | 50 +
...AP_PDUSessionResourceToReleaseItemRelCmd.c | 99 +
...AP_PDUSessionResourceToReleaseItemRelCmd.h | 50 +
...GAP_PDUSessionResourceToReleaseListHOCmd.c | 50 +
...GAP_PDUSessionResourceToReleaseListHOCmd.h | 44 +
...AP_PDUSessionResourceToReleaseListRelCmd.c | 50 +
...AP_PDUSessionResourceToReleaseListRelCmd.h | 44 +
src/asn/ngap/ASN_NGAP_PDUSessionType.c | 61 +
src/asn/ngap/ASN_NGAP_PDUSessionType.h | 57 +
src/asn/ngap/ASN_NGAP_PDUSessionUsageReport.c | 125 +
src/asn/ngap/ASN_NGAP_PDUSessionUsageReport.h | 62 +
.../ASN_NGAP_PEIPSassistanceInformation.c | 63 +
.../ASN_NGAP_PEIPSassistanceInformation.h | 48 +
src/asn/ngap/ASN_NGAP_PLMNAreaBasedQMC.c | 63 +
src/asn/ngap/ASN_NGAP_PLMNAreaBasedQMC.h | 48 +
src/asn/ngap/ASN_NGAP_PLMNIdentity.c | 62 +
src/asn/ngap/ASN_NGAP_PLMNIdentity.h | 44 +
src/asn/ngap/ASN_NGAP_PLMNListforQMC.c | 49 +
src/asn/ngap/ASN_NGAP_PLMNListforQMC.h | 42 +
src/asn/ngap/ASN_NGAP_PLMNSupportItem.c | 73 +
src/asn/ngap/ASN_NGAP_PLMNSupportItem.h | 50 +
src/asn/ngap/ASN_NGAP_PLMNSupportList.c | 50 +
src/asn/ngap/ASN_NGAP_PLMNSupportList.h | 44 +
.../ASN_NGAP_PNI-NPN-MobilityInformation.c | 63 +
.../ASN_NGAP_PNI-NPN-MobilityInformation.h | 48 +
src/asn/ngap/ASN_NGAP_PWSCancelRequest.c | 50 +
src/asn/ngap/ASN_NGAP_PWSCancelRequest.h | 44 +
src/asn/ngap/ASN_NGAP_PWSCancelResponse.c | 50 +
src/asn/ngap/ASN_NGAP_PWSCancelResponse.h | 44 +
src/asn/ngap/ASN_NGAP_PWSFailedCellIDList.c | 75 +
src/asn/ngap/ASN_NGAP_PWSFailedCellIDList.h | 58 +
src/asn/ngap/ASN_NGAP_PWSFailureIndication.c | 50 +
src/asn/ngap/ASN_NGAP_PWSFailureIndication.h | 44 +
src/asn/ngap/ASN_NGAP_PWSRestartIndication.c | 50 +
src/asn/ngap/ASN_NGAP_PWSRestartIndication.h | 44 +
src/asn/ngap/ASN_NGAP_PacketDelayBudget.c | 61 +
src/asn/ngap/ASN_NGAP_PacketDelayBudget.h | 44 +
src/asn/ngap/ASN_NGAP_PacketErrorRate.c | 133 +
src/asn/ngap/ASN_NGAP_PacketErrorRate.h | 49 +
src/asn/ngap/ASN_NGAP_PacketLossRate.c | 61 +
src/asn/ngap/ASN_NGAP_PacketLossRate.h | 44 +
src/asn/ngap/ASN_NGAP_Paging.c | 50 +
src/asn/ngap/ASN_NGAP_Paging.h | 44 +
.../ASN_NGAP_PagingAssisDataforCEcapabUE.c | 73 +
.../ASN_NGAP_PagingAssisDataforCEcapabUE.h | 50 +
src/asn/ngap/ASN_NGAP_PagingAttemptCount.c | 61 +
src/asn/ngap/ASN_NGAP_PagingAttemptCount.h | 44 +
.../ngap/ASN_NGAP_PagingAttemptInformation.c | 83 +
.../ngap/ASN_NGAP_PagingAttemptInformation.h | 52 +
src/asn/ngap/ASN_NGAP_PagingCause.c | 53 +
src/asn/ngap/ASN_NGAP_PagingCause.h | 53 +
...GAP_PagingCauseIndicationForVoiceService.c | 53 +
...GAP_PagingCauseIndicationForVoiceService.h | 53 +
src/asn/ngap/ASN_NGAP_PagingDRX.c | 59 +
src/asn/ngap/ASN_NGAP_PagingDRX.h | 56 +
src/asn/ngap/ASN_NGAP_PagingOrigin.c | 53 +
src/asn/ngap/ASN_NGAP_PagingOrigin.h | 53 +
src/asn/ngap/ASN_NGAP_PagingPriority.c | 67 +
src/asn/ngap/ASN_NGAP_PagingPriority.h | 60 +
.../ASN_NGAP_PagingProbabilityInformation.c | 93 +
.../ASN_NGAP_PagingProbabilityInformation.h | 73 +
src/asn/ngap/ASN_NGAP_PathSwitchRequest.c | 50 +
src/asn/ngap/ASN_NGAP_PathSwitchRequest.h | 44 +
.../ASN_NGAP_PathSwitchRequestAcknowledge.c | 50 +
.../ASN_NGAP_PathSwitchRequestAcknowledge.h | 44 +
...GAP_PathSwitchRequestAcknowledgeTransfer.c | 75 +
...GAP_PathSwitchRequestAcknowledgeTransfer.h | 48 +
.../ngap/ASN_NGAP_PathSwitchRequestFailure.c | 50 +
.../ngap/ASN_NGAP_PathSwitchRequestFailure.h | 44 +
...GAP_PathSwitchRequestSetupFailedTransfer.c | 63 +
...GAP_PathSwitchRequestSetupFailedTransfer.h | 46 +
.../ngap/ASN_NGAP_PathSwitchRequestTransfer.c | 94 +
.../ngap/ASN_NGAP_PathSwitchRequestTransfer.h | 52 +
...AP_PathSwitchRequestUnsuccessfulTransfer.c | 63 +
...AP_PathSwitchRequestUnsuccessfulTransfer.h | 46 +
src/asn/ngap/ASN_NGAP_PedestrianUE.c | 55 +
src/asn/ngap/ASN_NGAP_PedestrianUE.h | 54 +
...ASN_NGAP_PeriodicRegistrationUpdateTimer.c | 67 +
...ASN_NGAP_PeriodicRegistrationUpdateTimer.h | 44 +
src/asn/ngap/ASN_NGAP_PeriodicReportingIEs.c | 63 +
src/asn/ngap/ASN_NGAP_PeriodicReportingIEs.h | 48 +
src/asn/ngap/ASN_NGAP_Periodicity.c | 61 +
src/asn/ngap/ASN_NGAP_Periodicity.h | 44 +
src/asn/ngap/ASN_NGAP_PortNumber.c | 62 +
src/asn/ngap/ASN_NGAP_PortNumber.h | 44 +
src/asn/ngap/ASN_NGAP_Pre-emptionCapability.c | 55 +
src/asn/ngap/ASN_NGAP_Pre-emptionCapability.h | 54 +
.../ngap/ASN_NGAP_Pre-emptionVulnerability.c | 55 +
.../ngap/ASN_NGAP_Pre-emptionVulnerability.h | 54 +
src/asn/ngap/ASN_NGAP_Presence.c | 55 +
src/asn/ngap/ASN_NGAP_Presence.h | 52 +
src/asn/ngap/ASN_NGAP_PriorityLevelARP.c | 61 +
src/asn/ngap/ASN_NGAP_PriorityLevelARP.h | 44 +
src/asn/ngap/ASN_NGAP_PriorityLevelQos.c | 61 +
src/asn/ngap/ASN_NGAP_PriorityLevelQos.h | 44 +
src/asn/ngap/ASN_NGAP_PrivacyIndicator.c | 55 +
src/asn/ngap/ASN_NGAP_PrivacyIndicator.h | 54 +
src/asn/ngap/ASN_NGAP_PrivateIE-Container.c | 50 +
src/asn/ngap/ASN_NGAP_PrivateIE-Container.h | 44 +
src/asn/ngap/ASN_NGAP_PrivateIE-Field.c | 166 +
src/asn/ngap/ASN_NGAP_PrivateIE-Field.h | 60 +
src/asn/ngap/ASN_NGAP_PrivateIE-ID.c | 92 +
src/asn/ngap/ASN_NGAP_PrivateIE-ID.h | 53 +
src/asn/ngap/ASN_NGAP_PrivateMessage.c | 50 +
src/asn/ngap/ASN_NGAP_PrivateMessage.h | 44 +
src/asn/ngap/ASN_NGAP_ProcedureCode.c | 61 +
src/asn/ngap/ASN_NGAP_ProcedureCode.h | 120 +
src/asn/ngap/ASN_NGAP_ProcedureStageChoice.c | 64 +
src/asn/ngap/ASN_NGAP_ProcedureStageChoice.h | 55 +
.../ASN_NGAP_ProtocolExtensionContainer.c | 15050 ++++
.../ASN_NGAP_ProtocolExtensionContainer.h | 4169 +
.../ngap/ASN_NGAP_ProtocolExtensionField.c | 68198 ++++++++++++++++
.../ngap/ASN_NGAP_ProtocolExtensionField.h | 8641 ++
src/asn/ngap/ASN_NGAP_ProtocolExtensionID.c | 61 +
src/asn/ngap/ASN_NGAP_ProtocolExtensionID.h | 44 +
src/asn/ngap/ASN_NGAP_ProtocolIE-Container.c | 4930 ++
src/asn/ngap/ASN_NGAP_ProtocolIE-Container.h | 1386 +
.../ngap/ASN_NGAP_ProtocolIE-ContainerList.c | 9 +
.../ngap/ASN_NGAP_ProtocolIE-ContainerList.h | 23 +
.../ngap/ASN_NGAP_ProtocolIE-ContainerPair.c | 9 +
.../ngap/ASN_NGAP_ProtocolIE-ContainerPair.h | 23 +
.../ASN_NGAP_ProtocolIE-ContainerPairList.c | 9 +
.../ASN_NGAP_ProtocolIE-ContainerPairList.h | 23 +
src/asn/ngap/ASN_NGAP_ProtocolIE-Field.c | 51633 ++++++++++++
src/asn/ngap/ASN_NGAP_ProtocolIE-Field.h | 5682 ++
src/asn/ngap/ASN_NGAP_ProtocolIE-FieldPair.c | 9 +
src/asn/ngap/ASN_NGAP_ProtocolIE-FieldPair.h | 23 +
src/asn/ngap/ASN_NGAP_ProtocolIE-ID.c | 61 +
src/asn/ngap/ASN_NGAP_ProtocolIE-ID.h | 405 +
.../ASN_NGAP_ProtocolIE-SingleContainer.c | 1481 +
.../ASN_NGAP_ProtocolIE-SingleContainer.h | 862 +
src/asn/ngap/ASN_NGAP_QMCConfigInfo.c | 63 +
src/asn/ngap/ASN_NGAP_QMCConfigInfo.h | 48 +
src/asn/ngap/ASN_NGAP_QMCDeactivation.c | 63 +
src/asn/ngap/ASN_NGAP_QMCDeactivation.h | 48 +
src/asn/ngap/ASN_NGAP_QoEReference.c | 62 +
src/asn/ngap/ASN_NGAP_QoEReference.h | 44 +
src/asn/ngap/ASN_NGAP_QoEReferenceList.c | 49 +
src/asn/ngap/ASN_NGAP_QoEReferenceList.h | 42 +
src/asn/ngap/ASN_NGAP_QoSFlowList.c | 49 +
src/asn/ngap/ASN_NGAP_QoSFlowList.h | 39 +
.../ngap/ASN_NGAP_QoSFlowsUsageReport-Item.c | 135 +
.../ngap/ASN_NGAP_QoSFlowsUsageReport-Item.h | 64 +
.../ngap/ASN_NGAP_QoSFlowsUsageReportList.c | 50 +
.../ngap/ASN_NGAP_QoSFlowsUsageReportList.h | 44 +
src/asn/ngap/ASN_NGAP_QosCharacteristics.c | 75 +
src/asn/ngap/ASN_NGAP_QosCharacteristics.h | 58 +
src/asn/ngap/ASN_NGAP_QosFlowAcceptedItem.c | 63 +
src/asn/ngap/ASN_NGAP_QosFlowAcceptedItem.h | 48 +
src/asn/ngap/ASN_NGAP_QosFlowAcceptedList.c | 50 +
src/asn/ngap/ASN_NGAP_QosFlowAcceptedList.h | 44 +
.../ASN_NGAP_QosFlowAddOrModifyRequestItem.c | 84 +
.../ASN_NGAP_QosFlowAddOrModifyRequestItem.h | 52 +
.../ASN_NGAP_QosFlowAddOrModifyRequestList.c | 50 +
.../ASN_NGAP_QosFlowAddOrModifyRequestList.h | 44 +
.../ASN_NGAP_QosFlowAddOrModifyResponseItem.c | 63 +
.../ASN_NGAP_QosFlowAddOrModifyResponseItem.h | 48 +
.../ASN_NGAP_QosFlowAddOrModifyResponseList.c | 50 +
.../ASN_NGAP_QosFlowAddOrModifyResponseList.h | 44 +
src/asn/ngap/ASN_NGAP_QosFlowFeedbackItem.c | 93 +
src/asn/ngap/ASN_NGAP_QosFlowFeedbackItem.h | 53 +
src/asn/ngap/ASN_NGAP_QosFlowFeedbackList.c | 50 +
src/asn/ngap/ASN_NGAP_QosFlowFeedbackList.h | 44 +
src/asn/ngap/ASN_NGAP_QosFlowIdentifier.c | 61 +
src/asn/ngap/ASN_NGAP_QosFlowIdentifier.h | 44 +
.../ngap/ASN_NGAP_QosFlowInformationItem.c | 73 +
.../ngap/ASN_NGAP_QosFlowInformationItem.h | 50 +
.../ngap/ASN_NGAP_QosFlowInformationList.c | 50 +
.../ngap/ASN_NGAP_QosFlowInformationList.h | 44 +
.../ASN_NGAP_QosFlowItemWithDataForwarding.c | 73 +
.../ASN_NGAP_QosFlowItemWithDataForwarding.h | 50 +
.../ngap/ASN_NGAP_QosFlowLevelQosParameters.c | 104 +
.../ngap/ASN_NGAP_QosFlowLevelQosParameters.h | 56 +
src/asn/ngap/ASN_NGAP_QosFlowListWithCause.c | 50 +
src/asn/ngap/ASN_NGAP_QosFlowListWithCause.h | 44 +
.../ASN_NGAP_QosFlowListWithDataForwarding.c | 50 +
.../ASN_NGAP_QosFlowListWithDataForwarding.h | 44 +
.../ngap/ASN_NGAP_QosFlowModifyConfirmItem.c | 63 +
.../ngap/ASN_NGAP_QosFlowModifyConfirmItem.h | 48 +
.../ngap/ASN_NGAP_QosFlowModifyConfirmList.c | 50 +
.../ngap/ASN_NGAP_QosFlowModifyConfirmList.h | 44 +
src/asn/ngap/ASN_NGAP_QosFlowNotifyItem.c | 73 +
src/asn/ngap/ASN_NGAP_QosFlowNotifyItem.h | 50 +
src/asn/ngap/ASN_NGAP_QosFlowNotifyList.c | 50 +
src/asn/ngap/ASN_NGAP_QosFlowNotifyList.h | 44 +
src/asn/ngap/ASN_NGAP_QosFlowParametersItem.c | 74 +
src/asn/ngap/ASN_NGAP_QosFlowParametersItem.h | 50 +
src/asn/ngap/ASN_NGAP_QosFlowParametersList.c | 50 +
src/asn/ngap/ASN_NGAP_QosFlowParametersList.h | 44 +
.../ngap/ASN_NGAP_QosFlowPerTNLInformation.c | 73 +
.../ngap/ASN_NGAP_QosFlowPerTNLInformation.h | 50 +
.../ASN_NGAP_QosFlowPerTNLInformationItem.c | 63 +
.../ASN_NGAP_QosFlowPerTNLInformationItem.h | 48 +
.../ASN_NGAP_QosFlowPerTNLInformationList.c | 50 +
.../ASN_NGAP_QosFlowPerTNLInformationList.h | 44 +
.../ngap/ASN_NGAP_QosFlowSetupRequestItem.c | 83 +
.../ngap/ASN_NGAP_QosFlowSetupRequestItem.h | 52 +
.../ngap/ASN_NGAP_QosFlowSetupRequestList.c | 50 +
.../ngap/ASN_NGAP_QosFlowSetupRequestList.h | 44 +
.../ngap/ASN_NGAP_QosFlowToBeForwardedItem.c | 63 +
.../ngap/ASN_NGAP_QosFlowToBeForwardedItem.h | 48 +
.../ngap/ASN_NGAP_QosFlowToBeForwardedList.c | 50 +
.../ngap/ASN_NGAP_QosFlowToBeForwardedList.h | 44 +
src/asn/ngap/ASN_NGAP_QosFlowWithCauseItem.c | 73 +
src/asn/ngap/ASN_NGAP_QosFlowWithCauseItem.h | 50 +
...ASN_NGAP_QosMonitoringReportingFrequency.c | 61 +
...ASN_NGAP_QosMonitoringReportingFrequency.h | 44 +
src/asn/ngap/ASN_NGAP_QosMonitoringRequest.c | 59 +
src/asn/ngap/ASN_NGAP_QosMonitoringRequest.h | 56 +
src/asn/ngap/ASN_NGAP_RAN-UE-NGAP-ID.c | 57 +
src/asn/ngap/ASN_NGAP_RAN-UE-NGAP-ID.h | 45 +
.../ngap/ASN_NGAP_RANCPRelocationIndication.c | 50 +
.../ngap/ASN_NGAP_RANCPRelocationIndication.h | 44 +
.../ngap/ASN_NGAP_RANConfigurationUpdate.c | 50 +
.../ngap/ASN_NGAP_RANConfigurationUpdate.h | 44 +
...N_NGAP_RANConfigurationUpdateAcknowledge.c | 50 +
...N_NGAP_RANConfigurationUpdateAcknowledge.h | 44 +
.../ASN_NGAP_RANConfigurationUpdateFailure.c | 50 +
.../ASN_NGAP_RANConfigurationUpdateFailure.h | 44 +
src/asn/ngap/ASN_NGAP_RANNodeName.c | 106 +
src/asn/ngap/ASN_NGAP_RANNodeName.h | 44 +
src/asn/ngap/ASN_NGAP_RANNodeNameUTF8String.c | 68 +
src/asn/ngap/ASN_NGAP_RANNodeNameUTF8String.h | 44 +
.../ngap/ASN_NGAP_RANNodeNameVisibleString.c | 76 +
.../ngap/ASN_NGAP_RANNodeNameVisibleString.h | 44 +
src/asn/ngap/ASN_NGAP_RANPagingPriority.c | 61 +
src/asn/ngap/ASN_NGAP_RANPagingPriority.h | 44 +
...P_RANStatusTransfer-TransparentContainer.c | 63 +
...P_RANStatusTransfer-TransparentContainer.h | 48 +
src/asn/ngap/ASN_NGAP_RAT-Information.c | 63 +
src/asn/ngap/ASN_NGAP_RAT-Information.h | 58 +
.../ngap/ASN_NGAP_RATRestrictionInformation.c | 67 +
.../ngap/ASN_NGAP_RATRestrictionInformation.h | 44 +
src/asn/ngap/ASN_NGAP_RATRestrictions-Item.c | 73 +
src/asn/ngap/ASN_NGAP_RATRestrictions-Item.h | 50 +
src/asn/ngap/ASN_NGAP_RATRestrictions.c | 50 +
src/asn/ngap/ASN_NGAP_RATRestrictions.h | 44 +
...GAP_RGLevelWirelineAccessCharacteristics.c | 31 +
...GAP_RGLevelWirelineAccessCharacteristics.h | 43 +
src/asn/ngap/ASN_NGAP_RIMInformation.c | 121 +
src/asn/ngap/ASN_NGAP_RIMInformation.h | 60 +
.../ngap/ASN_NGAP_RIMInformationTransfer.c | 83 +
.../ngap/ASN_NGAP_RIMInformationTransfer.h | 52 +
src/asn/ngap/ASN_NGAP_RNC-ID.c | 61 +
src/asn/ngap/ASN_NGAP_RNC-ID.h | 44 +
src/asn/ngap/ASN_NGAP_RRCContainer.c | 31 +
src/asn/ngap/ASN_NGAP_RRCContainer.h | 43 +
src/asn/ngap/ASN_NGAP_RRCEstablishmentCause.c | 75 +
src/asn/ngap/ASN_NGAP_RRCEstablishmentCause.h | 64 +
.../ASN_NGAP_RRCInactiveTransitionReport.c | 50 +
.../ASN_NGAP_RRCInactiveTransitionReport.h | 44 +
..._NGAP_RRCInactiveTransitionReportRequest.c | 57 +
..._NGAP_RRCInactiveTransitionReportRequest.h | 55 +
src/asn/ngap/ASN_NGAP_RRCState.c | 55 +
src/asn/ngap/ASN_NGAP_RRCState.h | 54 +
src/asn/ngap/ASN_NGAP_RSN.c | 55 +
src/asn/ngap/ASN_NGAP_RSN.h | 54 +
src/asn/ngap/ASN_NGAP_Range.c | 69 +
src/asn/ngap/ASN_NGAP_Range.h | 61 +
src/asn/ngap/ASN_NGAP_RecommendedCellItem.c | 103 +
src/asn/ngap/ASN_NGAP_RecommendedCellItem.h | 50 +
src/asn/ngap/ASN_NGAP_RecommendedCellList.c | 50 +
src/asn/ngap/ASN_NGAP_RecommendedCellList.h | 44 +
.../ngap/ASN_NGAP_RecommendedCellsForPaging.c | 63 +
.../ngap/ASN_NGAP_RecommendedCellsForPaging.h | 48 +
.../ngap/ASN_NGAP_RecommendedRANNodeItem.c | 63 +
.../ngap/ASN_NGAP_RecommendedRANNodeItem.h | 48 +
.../ngap/ASN_NGAP_RecommendedRANNodeList.c | 50 +
.../ngap/ASN_NGAP_RecommendedRANNodeList.h | 44 +
.../ASN_NGAP_RecommendedRANNodesForPaging.c | 63 +
.../ASN_NGAP_RecommendedRANNodesForPaging.h | 48 +
src/asn/ngap/ASN_NGAP_RedCapIndication.c | 53 +
src/asn/ngap/ASN_NGAP_RedCapIndication.h | 53 +
.../ngap/ASN_NGAP_RedirectionVoiceFallback.c | 55 +
.../ngap/ASN_NGAP_RedirectionVoiceFallback.h | 54 +
.../ASN_NGAP_RedundantPDUSessionInformation.c | 63 +
.../ASN_NGAP_RedundantPDUSessionInformation.h | 48 +
.../ngap/ASN_NGAP_RedundantQosFlowIndicator.c | 53 +
.../ngap/ASN_NGAP_RedundantQosFlowIndicator.h | 51 +
.../ngap/ASN_NGAP_ReflectiveQosAttribute.c | 53 +
.../ngap/ASN_NGAP_ReflectiveQosAttribute.h | 53 +
src/asn/ngap/ASN_NGAP_RejectedNSSAIinPLMN.c | 62 +
src/asn/ngap/ASN_NGAP_RejectedNSSAIinPLMN.h | 44 +
src/asn/ngap/ASN_NGAP_RejectedNSSAIinTA.c | 62 +
src/asn/ngap/ASN_NGAP_RejectedNSSAIinTA.h | 44 +
src/asn/ngap/ASN_NGAP_RelativeAMFCapacity.c | 61 +
src/asn/ngap/ASN_NGAP_RelativeAMFCapacity.h | 44 +
src/asn/ngap/ASN_NGAP_RepetitionPeriod.c | 61 +
src/asn/ngap/ASN_NGAP_RepetitionPeriod.h | 44 +
src/asn/ngap/ASN_NGAP_ReportAmountMDT.c | 65 +
src/asn/ngap/ASN_NGAP_ReportAmountMDT.h | 57 +
src/asn/ngap/ASN_NGAP_ReportArea.c | 53 +
src/asn/ngap/ASN_NGAP_ReportArea.h | 53 +
src/asn/ngap/ASN_NGAP_ReportCharacteristics.c | 67 +
src/asn/ngap/ASN_NGAP_ReportCharacteristics.h | 44 +
src/asn/ngap/ASN_NGAP_ReportIntervalMDT.c | 75 +
src/asn/ngap/ASN_NGAP_ReportIntervalMDT.h | 62 +
src/asn/ngap/ASN_NGAP_ReportType.c | 75 +
src/asn/ngap/ASN_NGAP_ReportType.h | 58 +
src/asn/ngap/ASN_NGAP_ReportingPeriodicity.c | 63 +
src/asn/ngap/ASN_NGAP_ReportingPeriodicity.h | 58 +
src/asn/ngap/ASN_NGAP_ReportingSystem.c | 85 +
src/asn/ngap/ASN_NGAP_ReportingSystem.h | 61 +
src/asn/ngap/ASN_NGAP_RerouteNASRequest.c | 50 +
src/asn/ngap/ASN_NGAP_RerouteNASRequest.h | 44 +
src/asn/ngap/ASN_NGAP_ResetAll.c | 53 +
src/asn/ngap/ASN_NGAP_ResetAll.h | 53 +
src/asn/ngap/ASN_NGAP_ResetType.c | 74 +
src/asn/ngap/ASN_NGAP_ResetType.h | 58 +
.../ASN_NGAP_ResourceStatusReportingSystem.c | 75 +
.../ASN_NGAP_ResourceStatusReportingSystem.h | 58 +
src/asn/ngap/ASN_NGAP_RetrieveUEInformation.c | 50 +
src/asn/ngap/ASN_NGAP_RetrieveUEInformation.h | 44 +
src/asn/ngap/ASN_NGAP_RoutingID.c | 31 +
src/asn/ngap/ASN_NGAP_RoutingID.h | 43 +
src/asn/ngap/ASN_NGAP_S-NSSAI.c | 73 +
src/asn/ngap/ASN_NGAP_S-NSSAI.h | 50 +
src/asn/ngap/ASN_NGAP_SCTP-TLAs.c | 49 +
src/asn/ngap/ASN_NGAP_SCTP-TLAs.h | 42 +
src/asn/ngap/ASN_NGAP_SD.c | 62 +
src/asn/ngap/ASN_NGAP_SD.h | 44 +
.../ngap/ASN_NGAP_SNPN-MobilityInformation.c | 63 +
.../ngap/ASN_NGAP_SNPN-MobilityInformation.h | 48 +
.../ngap/ASN_NGAP_SONConfigurationTransfer.c | 94 +
.../ngap/ASN_NGAP_SONConfigurationTransfer.h | 54 +
src/asn/ngap/ASN_NGAP_SONInformation.c | 74 +
src/asn/ngap/ASN_NGAP_SONInformation.h | 58 +
src/asn/ngap/ASN_NGAP_SONInformationReply.c | 64 +
src/asn/ngap/ASN_NGAP_SONInformationReply.h | 48 +
src/asn/ngap/ASN_NGAP_SONInformationReport.c | 75 +
src/asn/ngap/ASN_NGAP_SONInformationReport.h | 58 +
src/asn/ngap/ASN_NGAP_SONInformationRequest.c | 53 +
src/asn/ngap/ASN_NGAP_SONInformationRequest.h | 53 +
.../ngap/ASN_NGAP_SRVCCOperationPossible.c | 55 +
.../ngap/ASN_NGAP_SRVCCOperationPossible.h | 54 +
src/asn/ngap/ASN_NGAP_SST.c | 62 +
src/asn/ngap/ASN_NGAP_SST.h | 44 +
.../ASN_NGAP_ScheduledCommunicationTime.c | 179 +
.../ASN_NGAP_ScheduledCommunicationTime.h | 51 +
.../ASN_NGAP_SecondaryRATDataUsageReport.c | 50 +
.../ASN_NGAP_SecondaryRATDataUsageReport.h | 44 +
...NGAP_SecondaryRATDataUsageReportTransfer.c | 64 +
...NGAP_SecondaryRATDataUsageReportTransfer.h | 46 +
.../ASN_NGAP_SecondaryRATUsageInformation.c | 75 +
.../ASN_NGAP_SecondaryRATUsageInformation.h | 50 +
src/asn/ngap/ASN_NGAP_SecurityContext.c | 73 +
src/asn/ngap/ASN_NGAP_SecurityContext.h | 50 +
src/asn/ngap/ASN_NGAP_SecurityIndication.c | 83 +
src/asn/ngap/ASN_NGAP_SecurityIndication.h | 52 +
src/asn/ngap/ASN_NGAP_SecurityKey.c | 67 +
src/asn/ngap/ASN_NGAP_SecurityKey.h | 44 +
src/asn/ngap/ASN_NGAP_SecurityResult.c | 73 +
src/asn/ngap/ASN_NGAP_SecurityResult.h | 50 +
src/asn/ngap/ASN_NGAP_SensorMeasConfig.c | 53 +
src/asn/ngap/ASN_NGAP_SensorMeasConfig.h | 53 +
.../ngap/ASN_NGAP_SensorMeasConfigNameItem.c | 63 +
.../ngap/ASN_NGAP_SensorMeasConfigNameItem.h | 48 +
.../ngap/ASN_NGAP_SensorMeasConfigNameList.c | 50 +
.../ngap/ASN_NGAP_SensorMeasConfigNameList.h | 44 +
.../ASN_NGAP_SensorMeasurementConfiguration.c | 74 +
.../ASN_NGAP_SensorMeasurementConfiguration.h | 50 +
src/asn/ngap/ASN_NGAP_SensorNameConfig.c | 221 +
src/asn/ngap/ASN_NGAP_SensorNameConfig.h | 80 +
src/asn/ngap/ASN_NGAP_SerialNumber.c | 67 +
src/asn/ngap/ASN_NGAP_SerialNumber.h | 44 +
src/asn/ngap/ASN_NGAP_ServedGUAMIItem.c | 73 +
src/asn/ngap/ASN_NGAP_ServedGUAMIItem.h | 50 +
src/asn/ngap/ASN_NGAP_ServedGUAMIList.c | 50 +
src/asn/ngap/ASN_NGAP_ServedGUAMIList.h | 44 +
.../ASN_NGAP_ServiceAreaInformation-Item.c | 85 +
.../ASN_NGAP_ServiceAreaInformation-Item.h | 52 +
.../ngap/ASN_NGAP_ServiceAreaInformation.c | 50 +
.../ngap/ASN_NGAP_ServiceAreaInformation.h | 44 +
src/asn/ngap/ASN_NGAP_ServiceType.c | 57 +
src/asn/ngap/ASN_NGAP_ServiceType.h | 55 +
src/asn/ngap/ASN_NGAP_SgNB-UE-X2AP-ID.c | 57 +
src/asn/ngap/ASN_NGAP_SgNB-UE-X2AP-ID.h | 45 +
...N_NGAP_SharedNGU-MulticastTNLInformation.c | 83 +
...N_NGAP_SharedNGU-MulticastTNLInformation.h | 51 +
src/asn/ngap/ASN_NGAP_SliceOverloadItem.c | 63 +
src/asn/ngap/ASN_NGAP_SliceOverloadItem.h | 48 +
src/asn/ngap/ASN_NGAP_SliceOverloadList.c | 50 +
src/asn/ngap/ASN_NGAP_SliceOverloadList.h | 44 +
src/asn/ngap/ASN_NGAP_SliceSupportItem.c | 63 +
src/asn/ngap/ASN_NGAP_SliceSupportItem.h | 48 +
src/asn/ngap/ASN_NGAP_SliceSupportList.c | 50 +
src/asn/ngap/ASN_NGAP_SliceSupportList.h | 44 +
src/asn/ngap/ASN_NGAP_SliceSupportListQMC.c | 50 +
src/asn/ngap/ASN_NGAP_SliceSupportListQMC.h | 44 +
src/asn/ngap/ASN_NGAP_SliceSupportQMC-Item.c | 63 +
src/asn/ngap/ASN_NGAP_SliceSupportQMC-Item.h | 48 +
...e-ToTargetNGRANNode-TransparentContainer.c | 115 +
...e-ToTargetNGRANNode-TransparentContainer.h | 56 +
src/asn/ngap/ASN_NGAP_SourceNodeID.c | 64 +
src/asn/ngap/ASN_NGAP_SourceNodeID.h | 55 +
...P_SourceOfUEActivityBehaviourInformation.c | 55 +
...P_SourceOfUEActivityBehaviourInformation.h | 54 +
src/asn/ngap/ASN_NGAP_SourceRANNodeID.c | 73 +
src/asn/ngap/ASN_NGAP_SourceRANNodeID.h | 50 +
...GAP_SourceToTarget-AMFInformationReroute.c | 83 +
...GAP_SourceToTarget-AMFInformationReroute.h | 52 +
...NGAP_SourceToTarget-TransparentContainer.c | 31 +
...NGAP_SourceToTarget-TransparentContainer.h | 43 +
.../ASN_NGAP_SuccessfulHandoverReport-Item.c | 63 +
.../ASN_NGAP_SuccessfulHandoverReport-Item.h | 48 +
.../ASN_NGAP_SuccessfulHandoverReportList.c | 50 +
.../ASN_NGAP_SuccessfulHandoverReportList.h | 44 +
src/asn/ngap/ASN_NGAP_SuccessfulOutcome.c | 1058 +
src/asn/ngap/ASN_NGAP_SuccessfulOutcome.h | 237 +
src/asn/ngap/ASN_NGAP_SupportedTAItem.c | 73 +
src/asn/ngap/ASN_NGAP_SupportedTAItem.h | 50 +
src/asn/ngap/ASN_NGAP_SupportedTAList.c | 50 +
src/asn/ngap/ASN_NGAP_SupportedTAList.h | 44 +
src/asn/ngap/ASN_NGAP_SurvivalTime.c | 61 +
src/asn/ngap/ASN_NGAP_SurvivalTime.h | 44 +
.../ASN_NGAP_Suspend-Request-Indication.c | 53 +
.../ASN_NGAP_Suspend-Request-Indication.h | 53 +
.../ASN_NGAP_Suspend-Response-Indication.c | 53 +
.../ASN_NGAP_Suspend-Response-Indication.h | 53 +
src/asn/ngap/ASN_NGAP_SuspendIndicator.c | 53 +
src/asn/ngap/ASN_NGAP_SuspendIndicator.h | 53 +
src/asn/ngap/ASN_NGAP_TABasedMDT.c | 63 +
src/asn/ngap/ASN_NGAP_TABasedMDT.h | 48 +
src/asn/ngap/ASN_NGAP_TABasedQMC.c | 63 +
src/asn/ngap/ASN_NGAP_TABasedQMC.h | 48 +
src/asn/ngap/ASN_NGAP_TAC.c | 62 +
src/asn/ngap/ASN_NGAP_TAC.h | 44 +
src/asn/ngap/ASN_NGAP_TACListInNRNTN.c | 49 +
src/asn/ngap/ASN_NGAP_TACListInNRNTN.h | 42 +
src/asn/ngap/ASN_NGAP_TAI.c | 73 +
src/asn/ngap/ASN_NGAP_TAI.h | 50 +
src/asn/ngap/ASN_NGAP_TAIBasedMDT.c | 63 +
src/asn/ngap/ASN_NGAP_TAIBasedMDT.h | 48 +
src/asn/ngap/ASN_NGAP_TAIBasedQMC.c | 63 +
src/asn/ngap/ASN_NGAP_TAIBasedQMC.h | 48 +
.../ngap/ASN_NGAP_TAIBroadcastEUTRA-Item.c | 73 +
.../ngap/ASN_NGAP_TAIBroadcastEUTRA-Item.h | 50 +
src/asn/ngap/ASN_NGAP_TAIBroadcastEUTRA.c | 50 +
src/asn/ngap/ASN_NGAP_TAIBroadcastEUTRA.h | 44 +
src/asn/ngap/ASN_NGAP_TAIBroadcastNR-Item.c | 73 +
src/asn/ngap/ASN_NGAP_TAIBroadcastNR-Item.h | 50 +
src/asn/ngap/ASN_NGAP_TAIBroadcastNR.c | 50 +
src/asn/ngap/ASN_NGAP_TAIBroadcastNR.h | 44 +
.../ngap/ASN_NGAP_TAICancelledEUTRA-Item.c | 73 +
.../ngap/ASN_NGAP_TAICancelledEUTRA-Item.h | 50 +
src/asn/ngap/ASN_NGAP_TAICancelledEUTRA.c | 50 +
src/asn/ngap/ASN_NGAP_TAICancelledEUTRA.h | 44 +
src/asn/ngap/ASN_NGAP_TAICancelledNR-Item.c | 73 +
src/asn/ngap/ASN_NGAP_TAICancelledNR-Item.h | 50 +
src/asn/ngap/ASN_NGAP_TAICancelledNR.c | 50 +
src/asn/ngap/ASN_NGAP_TAICancelledNR.h | 44 +
src/asn/ngap/ASN_NGAP_TAIListForInactive.c | 50 +
src/asn/ngap/ASN_NGAP_TAIListForInactive.h | 44 +
.../ngap/ASN_NGAP_TAIListForInactiveItem.c | 63 +
.../ngap/ASN_NGAP_TAIListForInactiveItem.h | 48 +
src/asn/ngap/ASN_NGAP_TAIListForPaging.c | 50 +
src/asn/ngap/ASN_NGAP_TAIListForPaging.h | 44 +
src/asn/ngap/ASN_NGAP_TAIListForPagingItem.c | 63 +
src/asn/ngap/ASN_NGAP_TAIListForPagingItem.h | 48 +
src/asn/ngap/ASN_NGAP_TAIListForRestart.c | 50 +
src/asn/ngap/ASN_NGAP_TAIListForRestart.h | 44 +
src/asn/ngap/ASN_NGAP_TAIListForWarning.c | 50 +
src/asn/ngap/ASN_NGAP_TAIListForWarning.h | 44 +
src/asn/ngap/ASN_NGAP_TAIListforMDT.c | 50 +
src/asn/ngap/ASN_NGAP_TAIListforMDT.h | 44 +
src/asn/ngap/ASN_NGAP_TAIListforQMC.c | 50 +
src/asn/ngap/ASN_NGAP_TAIListforQMC.h | 44 +
src/asn/ngap/ASN_NGAP_TAINSAGSupportItem.c | 73 +
src/asn/ngap/ASN_NGAP_TAINSAGSupportItem.h | 50 +
src/asn/ngap/ASN_NGAP_TAINSAGSupportList.c | 50 +
src/asn/ngap/ASN_NGAP_TAINSAGSupportList.h | 44 +
src/asn/ngap/ASN_NGAP_TAListforMDT.c | 49 +
src/asn/ngap/ASN_NGAP_TAListforMDT.h | 42 +
src/asn/ngap/ASN_NGAP_TAListforQMC.c | 49 +
src/asn/ngap/ASN_NGAP_TAListforQMC.h | 42 +
src/asn/ngap/ASN_NGAP_TMGI.c | 62 +
src/asn/ngap/ASN_NGAP_TMGI.h | 44 +
src/asn/ngap/ASN_NGAP_TNAP-ID.c | 31 +
src/asn/ngap/ASN_NGAP_TNAP-ID.h | 43 +
src/asn/ngap/ASN_NGAP_TNGF-ID.c | 99 +
src/asn/ngap/ASN_NGAP_TNGF-ID.h | 55 +
.../ngap/ASN_NGAP_TNLAddressWeightFactor.c | 61 +
.../ngap/ASN_NGAP_TNLAddressWeightFactor.h | 44 +
src/asn/ngap/ASN_NGAP_TNLAssociationItem.c | 73 +
src/asn/ngap/ASN_NGAP_TNLAssociationItem.h | 50 +
src/asn/ngap/ASN_NGAP_TNLAssociationList.c | 50 +
src/asn/ngap/ASN_NGAP_TNLAssociationList.h | 44 +
src/asn/ngap/ASN_NGAP_TNLAssociationUsage.c | 57 +
src/asn/ngap/ASN_NGAP_TNLAssociationUsage.h | 55 +
.../ngap/ASN_NGAP_TSCAssistanceInformation.c | 73 +
.../ngap/ASN_NGAP_TSCAssistanceInformation.h | 50 +
.../ngap/ASN_NGAP_TSCTrafficCharacteristics.c | 74 +
.../ngap/ASN_NGAP_TSCTrafficCharacteristics.h | 49 +
src/asn/ngap/ASN_NGAP_TWAP-ID.c | 31 +
src/asn/ngap/ASN_NGAP_TWAP-ID.h | 43 +
src/asn/ngap/ASN_NGAP_TWIF-ID.c | 99 +
src/asn/ngap/ASN_NGAP_TWIF-ID.h | 55 +
src/asn/ngap/ASN_NGAP_TargetHomeENB-ID.c | 119 +
src/asn/ngap/ASN_NGAP_TargetHomeENB-ID.h | 52 +
src/asn/ngap/ASN_NGAP_TargetID.c | 75 +
src/asn/ngap/ASN_NGAP_TargetID.h | 58 +
...rceNGRANNode-FailureTransparentContainer.c | 64 +
...rceNGRANNode-FailureTransparentContainer.h | 46 +
...e-ToSourceNGRANNode-TransparentContainer.c | 63 +
...e-ToSourceNGRANNode-TransparentContainer.h | 46 +
src/asn/ngap/ASN_NGAP_TargetNSSAI-Item.c | 63 +
src/asn/ngap/ASN_NGAP_TargetNSSAI-Item.h | 48 +
src/asn/ngap/ASN_NGAP_TargetNSSAI.c | 50 +
src/asn/ngap/ASN_NGAP_TargetNSSAI.h | 44 +
.../ngap/ASN_NGAP_TargetNSSAIInformation.c | 73 +
.../ngap/ASN_NGAP_TargetNSSAIInformation.h | 50 +
src/asn/ngap/ASN_NGAP_TargetRANNodeID-RIM.c | 73 +
src/asn/ngap/ASN_NGAP_TargetRANNodeID-RIM.h | 50 +
src/asn/ngap/ASN_NGAP_TargetRANNodeID-SON.c | 73 +
src/asn/ngap/ASN_NGAP_TargetRANNodeID-SON.h | 50 +
src/asn/ngap/ASN_NGAP_TargetRANNodeID.c | 73 +
src/asn/ngap/ASN_NGAP_TargetRANNodeID.h | 50 +
src/asn/ngap/ASN_NGAP_TargetRNC-ID.c | 83 +
src/asn/ngap/ASN_NGAP_TargetRNC-ID.h | 52 +
...NGAP_TargetToSource-TransparentContainer.c | 31 +
...NGAP_TargetToSource-TransparentContainer.h | 43 +
src/asn/ngap/ASN_NGAP_TargeteNB-ID.c | 73 +
src/asn/ngap/ASN_NGAP_TargeteNB-ID.h | 50 +
...gettoSource-Failure-TransparentContainer.c | 31 +
...gettoSource-Failure-TransparentContainer.h | 43 +
src/asn/ngap/ASN_NGAP_Threshold-RSRP.c | 61 +
src/asn/ngap/ASN_NGAP_Threshold-RSRP.h | 44 +
src/asn/ngap/ASN_NGAP_Threshold-RSRQ.c | 61 +
src/asn/ngap/ASN_NGAP_Threshold-RSRQ.h | 44 +
src/asn/ngap/ASN_NGAP_Threshold-SINR.c | 61 +
src/asn/ngap/ASN_NGAP_Threshold-SINR.h | 44 +
src/asn/ngap/ASN_NGAP_TimeStamp.c | 62 +
src/asn/ngap/ASN_NGAP_TimeStamp.h | 44 +
.../ngap/ASN_NGAP_TimeSyncAssistanceInfo.c | 151 +
.../ngap/ASN_NGAP_TimeSyncAssistanceInfo.h | 60 +
src/asn/ngap/ASN_NGAP_TimeToTrigger.c | 81 +
src/asn/ngap/ASN_NGAP_TimeToTrigger.h | 65 +
src/asn/ngap/ASN_NGAP_TimeToWait.c | 63 +
src/asn/ngap/ASN_NGAP_TimeToWait.h | 58 +
src/asn/ngap/ASN_NGAP_TimeUEStayedInCell.c | 61 +
src/asn/ngap/ASN_NGAP_TimeUEStayedInCell.h | 44 +
...AP_TimeUEStayedInCellEnhancedGranularity.c | 61 +
...AP_TimeUEStayedInCellEnhancedGranularity.h | 44 +
.../ASN_NGAP_TimerApproachForGUAMIRemoval.c | 53 +
.../ASN_NGAP_TimerApproachForGUAMIRemoval.h | 53 +
src/asn/ngap/ASN_NGAP_TooearlyIntersystemHO.c | 84 +
src/asn/ngap/ASN_NGAP_TooearlyIntersystemHO.h | 52 +
src/asn/ngap/ASN_NGAP_TraceActivation.c | 93 +
src/asn/ngap/ASN_NGAP_TraceActivation.h | 54 +
src/asn/ngap/ASN_NGAP_TraceDepth.c | 63 +
src/asn/ngap/ASN_NGAP_TraceDepth.h | 58 +
.../ngap/ASN_NGAP_TraceFailureIndication.c | 50 +
.../ngap/ASN_NGAP_TraceFailureIndication.h | 44 +
src/asn/ngap/ASN_NGAP_TraceStart.c | 50 +
src/asn/ngap/ASN_NGAP_TraceStart.h | 44 +
.../ASN_NGAP_TrafficLoadReductionIndication.c | 61 +
.../ASN_NGAP_TrafficLoadReductionIndication.h | 44 +
src/asn/ngap/ASN_NGAP_TransportLayerAddress.c | 67 +
src/asn/ngap/ASN_NGAP_TransportLayerAddress.h | 44 +
src/asn/ngap/ASN_NGAP_TriggeringMessage.c | 55 +
src/asn/ngap/ASN_NGAP_TriggeringMessage.h | 52 +
src/asn/ngap/ASN_NGAP_TypeOfError.c | 55 +
src/asn/ngap/ASN_NGAP_TypeOfError.h | 54 +
.../ngap/ASN_NGAP_UE-DifferentiationInfo.c | 340 +
.../ngap/ASN_NGAP_UE-DifferentiationInfo.h | 91 +
src/asn/ngap/ASN_NGAP_UE-NGAP-ID-pair.c | 73 +
src/asn/ngap/ASN_NGAP_UE-NGAP-ID-pair.h | 50 +
src/asn/ngap/ASN_NGAP_UE-NGAP-IDs.c | 74 +
src/asn/ngap/ASN_NGAP_UE-NGAP-IDs.h | 58 +
src/asn/ngap/ASN_NGAP_UE-PagingItem.c | 73 +
src/asn/ngap/ASN_NGAP_UE-PagingItem.h | 50 +
src/asn/ngap/ASN_NGAP_UE-PagingList.c | 50 +
src/asn/ngap/ASN_NGAP_UE-PagingList.h | 44 +
src/asn/ngap/ASN_NGAP_UE-UP-CIoT-Support.c | 53 +
src/asn/ngap/ASN_NGAP_UE-UP-CIoT-Support.h | 53 +
...AP_UE-associatedLogicalNG-connectionItem.c | 73 +
...AP_UE-associatedLogicalNG-connectionItem.h | 50 +
...AP_UE-associatedLogicalNG-connectionList.c | 50 +
...AP_UE-associatedLogicalNG-connectionList.h | 44 +
.../ngap/ASN_NGAP_UEAggregateMaximumBitRate.c | 73 +
.../ngap/ASN_NGAP_UEAggregateMaximumBitRate.h | 49 +
.../ngap/ASN_NGAP_UEAppLayerMeasConfigInfo.c | 264 +
.../ngap/ASN_NGAP_UEAppLayerMeasConfigInfo.h | 75 +
.../ngap/ASN_NGAP_UEAppLayerMeasInfoItem.c | 63 +
.../ngap/ASN_NGAP_UEAppLayerMeasInfoItem.h | 48 +
.../ngap/ASN_NGAP_UEAppLayerMeasInfoList.c | 50 +
.../ngap/ASN_NGAP_UEAppLayerMeasInfoList.h | 44 +
.../ngap/ASN_NGAP_UECapabilityInfoRequest.c | 53 +
.../ngap/ASN_NGAP_UECapabilityInfoRequest.h | 53 +
.../ASN_NGAP_UEContextModificationFailure.c | 50 +
.../ASN_NGAP_UEContextModificationFailure.h | 44 +
.../ASN_NGAP_UEContextModificationRequest.c | 50 +
.../ASN_NGAP_UEContextModificationRequest.h | 44 +
.../ASN_NGAP_UEContextModificationResponse.c | 50 +
.../ASN_NGAP_UEContextModificationResponse.h | 44 +
.../ngap/ASN_NGAP_UEContextReleaseCommand.c | 50 +
.../ngap/ASN_NGAP_UEContextReleaseCommand.h | 44 +
.../ngap/ASN_NGAP_UEContextReleaseComplete.c | 50 +
.../ngap/ASN_NGAP_UEContextReleaseComplete.h | 44 +
.../ngap/ASN_NGAP_UEContextReleaseRequest.c | 50 +
.../ngap/ASN_NGAP_UEContextReleaseRequest.h | 44 +
src/asn/ngap/ASN_NGAP_UEContextRequest.c | 53 +
src/asn/ngap/ASN_NGAP_UEContextRequest.h | 53 +
.../ngap/ASN_NGAP_UEContextResumeFailure.c | 50 +
.../ngap/ASN_NGAP_UEContextResumeFailure.h | 44 +
.../ngap/ASN_NGAP_UEContextResumeRequest.c | 50 +
.../ngap/ASN_NGAP_UEContextResumeRequest.h | 44 +
.../ASN_NGAP_UEContextResumeRequestTransfer.c | 64 +
.../ASN_NGAP_UEContextResumeRequestTransfer.h | 46 +
.../ngap/ASN_NGAP_UEContextResumeResponse.c | 50 +
.../ngap/ASN_NGAP_UEContextResumeResponse.h | 44 +
...ASN_NGAP_UEContextResumeResponseTransfer.c | 64 +
...ASN_NGAP_UEContextResumeResponseTransfer.h | 46 +
.../ngap/ASN_NGAP_UEContextSuspendFailure.c | 50 +
.../ngap/ASN_NGAP_UEContextSuspendFailure.h | 44 +
.../ngap/ASN_NGAP_UEContextSuspendRequest.c | 50 +
.../ngap/ASN_NGAP_UEContextSuspendRequest.h | 44 +
...ASN_NGAP_UEContextSuspendRequestTransfer.c | 63 +
...ASN_NGAP_UEContextSuspendRequestTransfer.h | 46 +
.../ngap/ASN_NGAP_UEContextSuspendResponse.c | 50 +
.../ngap/ASN_NGAP_UEContextSuspendResponse.h | 44 +
src/asn/ngap/ASN_NGAP_UEHistoryInformation.c | 50 +
src/asn/ngap/ASN_NGAP_UEHistoryInformation.h | 44 +
.../ASN_NGAP_UEHistoryInformationFromTheUE.c | 63 +
.../ASN_NGAP_UEHistoryInformationFromTheUE.h | 55 +
src/asn/ngap/ASN_NGAP_UEIdentityIndexValue.c | 99 +
src/asn/ngap/ASN_NGAP_UEIdentityIndexValue.h | 55 +
src/asn/ngap/ASN_NGAP_UEInformationTransfer.c | 50 +
src/asn/ngap/ASN_NGAP_UEInformationTransfer.h | 44 +
src/asn/ngap/ASN_NGAP_UEPagingIdentity.c | 64 +
src/asn/ngap/ASN_NGAP_UEPagingIdentity.h | 55 +
src/asn/ngap/ASN_NGAP_UEPresence.c | 57 +
src/asn/ngap/ASN_NGAP_UEPresence.h | 55 +
.../ASN_NGAP_UEPresenceInAreaOfInterestItem.c | 73 +
.../ASN_NGAP_UEPresenceInAreaOfInterestItem.h | 50 +
.../ASN_NGAP_UEPresenceInAreaOfInterestList.c | 50 +
.../ASN_NGAP_UEPresenceInAreaOfInterestList.h | 44 +
src/asn/ngap/ASN_NGAP_UERLFReportContainer.c | 73 +
src/asn/ngap/ASN_NGAP_UERLFReportContainer.h | 58 +
src/asn/ngap/ASN_NGAP_UERadioCapability.c | 31 +
src/asn/ngap/ASN_NGAP_UERadioCapability.h | 43 +
.../ASN_NGAP_UERadioCapabilityCheckRequest.c | 50 +
.../ASN_NGAP_UERadioCapabilityCheckRequest.h | 44 +
.../ASN_NGAP_UERadioCapabilityCheckResponse.c | 50 +
.../ASN_NGAP_UERadioCapabilityCheckResponse.h | 44 +
.../ASN_NGAP_UERadioCapabilityForPaging.c | 73 +
.../ASN_NGAP_UERadioCapabilityForPaging.h | 50 +
...N_NGAP_UERadioCapabilityForPagingOfEUTRA.c | 31 +
...N_NGAP_UERadioCapabilityForPagingOfEUTRA.h | 43 +
..._NGAP_UERadioCapabilityForPagingOfNB-IoT.c | 31 +
..._NGAP_UERadioCapabilityForPagingOfNB-IoT.h | 43 +
.../ASN_NGAP_UERadioCapabilityForPagingOfNR.c | 31 +
.../ASN_NGAP_UERadioCapabilityForPagingOfNR.h | 43 +
src/asn/ngap/ASN_NGAP_UERadioCapabilityID.c | 31 +
src/asn/ngap/ASN_NGAP_UERadioCapabilityID.h | 43 +
...N_NGAP_UERadioCapabilityIDMappingRequest.c | 50 +
...N_NGAP_UERadioCapabilityIDMappingRequest.h | 44 +
..._NGAP_UERadioCapabilityIDMappingResponse.c | 50 +
..._NGAP_UERadioCapabilityIDMappingResponse.h | 44 +
...ASN_NGAP_UERadioCapabilityInfoIndication.c | 50 +
...ASN_NGAP_UERadioCapabilityInfoIndication.h | 44 +
.../ngap/ASN_NGAP_UERetentionInformation.c | 53 +
.../ngap/ASN_NGAP_UERetentionInformation.h | 53 +
.../ngap/ASN_NGAP_UESecurityCapabilities.c | 93 +
.../ngap/ASN_NGAP_UESecurityCapabilities.h | 54 +
.../ngap/ASN_NGAP_UESliceMaximumBitRateItem.c | 83 +
.../ngap/ASN_NGAP_UESliceMaximumBitRateItem.h | 51 +
.../ngap/ASN_NGAP_UESliceMaximumBitRateList.c | 50 +
.../ngap/ASN_NGAP_UESliceMaximumBitRateList.h | 44 +
.../ASN_NGAP_UETNLABindingReleaseRequest.c | 50 +
.../ASN_NGAP_UETNLABindingReleaseRequest.h | 44 +
.../ngap/ASN_NGAP_UL-CP-SecurityInformation.c | 73 +
.../ngap/ASN_NGAP_UL-CP-SecurityInformation.h | 50 +
src/asn/ngap/ASN_NGAP_UL-NAS-Count.c | 67 +
src/asn/ngap/ASN_NGAP_UL-NAS-Count.h | 44 +
src/asn/ngap/ASN_NGAP_UL-NAS-MAC.c | 67 +
src/asn/ngap/ASN_NGAP_UL-NAS-MAC.h | 44 +
.../ngap/ASN_NGAP_UL-NGU-UP-TNLModifyItem.c | 73 +
.../ngap/ASN_NGAP_UL-NGU-UP-TNLModifyItem.h | 49 +
.../ngap/ASN_NGAP_UL-NGU-UP-TNLModifyList.c | 50 +
.../ngap/ASN_NGAP_UL-NGU-UP-TNLModifyList.h | 44 +
src/asn/ngap/ASN_NGAP_ULForwarding.c | 53 +
src/asn/ngap/ASN_NGAP_ULForwarding.h | 53 +
.../ASN_NGAP_UPTransportLayerInformation.c | 64 +
.../ASN_NGAP_UPTransportLayerInformation.h | 55 +
...ASN_NGAP_UPTransportLayerInformationItem.c | 63 +
...ASN_NGAP_UPTransportLayerInformationItem.h | 48 +
...ASN_NGAP_UPTransportLayerInformationList.c | 50 +
...ASN_NGAP_UPTransportLayerInformationList.h | 44 +
...NGAP_UPTransportLayerInformationPairItem.c | 73 +
...NGAP_UPTransportLayerInformationPairItem.h | 49 +
...NGAP_UPTransportLayerInformationPairList.c | 50 +
...NGAP_UPTransportLayerInformationPairList.h | 44 +
src/asn/ngap/ASN_NGAP_URI-address.c | 36 +
src/asn/ngap/ASN_NGAP_URI-address.h | 44 +
src/asn/ngap/ASN_NGAP_UnavailableGUAMIItem.c | 83 +
src/asn/ngap/ASN_NGAP_UnavailableGUAMIItem.h | 52 +
src/asn/ngap/ASN_NGAP_UnavailableGUAMIList.c | 50 +
src/asn/ngap/ASN_NGAP_UnavailableGUAMIList.h | 44 +
src/asn/ngap/ASN_NGAP_UnsuccessfulOutcome.c | 918 +
src/asn/ngap/ASN_NGAP_UnsuccessfulOutcome.h | 209 +
src/asn/ngap/ASN_NGAP_UpdateFeedback.c | 67 +
src/asn/ngap/ASN_NGAP_UpdateFeedback.h | 44 +
src/asn/ngap/ASN_NGAP_UplinkNASTransport.c | 50 +
src/asn/ngap/ASN_NGAP_UplinkNASTransport.h | 44 +
...NGAP_UplinkNonUEAssociatedNRPPaTransport.c | 50 +
...NGAP_UplinkNonUEAssociatedNRPPaTransport.h | 44 +
.../ASN_NGAP_UplinkRANConfigurationTransfer.c | 50 +
.../ASN_NGAP_UplinkRANConfigurationTransfer.h | 44 +
.../ASN_NGAP_UplinkRANEarlyStatusTransfer.c | 50 +
.../ASN_NGAP_UplinkRANEarlyStatusTransfer.h | 44 +
.../ngap/ASN_NGAP_UplinkRANStatusTransfer.c | 50 +
.../ngap/ASN_NGAP_UplinkRANStatusTransfer.h | 44 +
.../ASN_NGAP_UplinkRIMInformationTransfer.c | 50 +
.../ASN_NGAP_UplinkRIMInformationTransfer.h | 44 +
...SN_NGAP_UplinkUEAssociatedNRPPaTransport.c | 50 +
...SN_NGAP_UplinkUEAssociatedNRPPaTransport.h | 44 +
.../ngap/ASN_NGAP_UserLocationInformation.c | 86 +
.../ngap/ASN_NGAP_UserLocationInformation.h | 61 +
.../ASN_NGAP_UserLocationInformationEUTRA.c | 83 +
.../ASN_NGAP_UserLocationInformationEUTRA.h | 52 +
.../ASN_NGAP_UserLocationInformationN3IWF.c | 73 +
.../ASN_NGAP_UserLocationInformationN3IWF.h | 50 +
.../ngap/ASN_NGAP_UserLocationInformationNR.c | 83 +
.../ngap/ASN_NGAP_UserLocationInformationNR.h | 52 +
.../ASN_NGAP_UserLocationInformationTNGF.c | 83 +
.../ASN_NGAP_UserLocationInformationTNGF.h | 52 +
.../ASN_NGAP_UserLocationInformationTWIF.c | 83 +
.../ASN_NGAP_UserLocationInformationTWIF.h | 52 +
.../ASN_NGAP_UserLocationInformationW-AGF.c | 74 +
.../ASN_NGAP_UserLocationInformationW-AGF.h | 58 +
.../ASN_NGAP_UserPlaneSecurityInformation.c | 73 +
.../ASN_NGAP_UserPlaneSecurityInformation.h | 50 +
src/asn/ngap/ASN_NGAP_VehicleUE.c | 55 +
src/asn/ngap/ASN_NGAP_VehicleUE.h | 54 +
.../ngap/ASN_NGAP_VolumeTimedReport-Item.c | 227 +
.../ngap/ASN_NGAP_VolumeTimedReport-Item.h | 52 +
src/asn/ngap/ASN_NGAP_VolumeTimedReportList.c | 50 +
src/asn/ngap/ASN_NGAP_VolumeTimedReportList.h | 44 +
src/asn/ngap/ASN_NGAP_W-AGF-ID.c | 99 +
src/asn/ngap/ASN_NGAP_W-AGF-ID.h | 55 +
src/asn/ngap/ASN_NGAP_WLANMeasConfig.c | 53 +
src/asn/ngap/ASN_NGAP_WLANMeasConfig.h | 53 +
.../ngap/ASN_NGAP_WLANMeasConfigNameItem.c | 63 +
.../ngap/ASN_NGAP_WLANMeasConfigNameItem.h | 48 +
.../ngap/ASN_NGAP_WLANMeasConfigNameList.c | 50 +
.../ngap/ASN_NGAP_WLANMeasConfigNameList.h | 44 +
.../ASN_NGAP_WLANMeasurementConfiguration.c | 186 +
.../ASN_NGAP_WLANMeasurementConfiguration.h | 69 +
src/asn/ngap/ASN_NGAP_WLANName.c | 62 +
src/asn/ngap/ASN_NGAP_WLANName.h | 44 +
.../ASN_NGAP_WUS-Assistance-Information.c | 63 +
.../ASN_NGAP_WUS-Assistance-Information.h | 48 +
.../ngap/ASN_NGAP_WarningAreaCoordinates.c | 62 +
.../ngap/ASN_NGAP_WarningAreaCoordinates.h | 44 +
src/asn/ngap/ASN_NGAP_WarningAreaList.c | 97 +
src/asn/ngap/ASN_NGAP_WarningAreaList.h | 64 +
.../ngap/ASN_NGAP_WarningMessageContents.c | 62 +
.../ngap/ASN_NGAP_WarningMessageContents.h | 44 +
src/asn/ngap/ASN_NGAP_WarningSecurityInfo.c | 62 +
src/asn/ngap/ASN_NGAP_WarningSecurityInfo.h | 44 +
src/asn/ngap/ASN_NGAP_WarningType.c | 62 +
src/asn/ngap/ASN_NGAP_WarningType.h | 44 +
.../ASN_NGAP_WriteReplaceWarningRequest.c | 50 +
.../ASN_NGAP_WriteReplaceWarningRequest.h | 44 +
.../ASN_NGAP_WriteReplaceWarningResponse.c | 50 +
.../ASN_NGAP_WriteReplaceWarningResponse.h | 44 +
src/asn/ngap/ASN_NGAP_XnExtTLA-Item.c | 74 +
src/asn/ngap/ASN_NGAP_XnExtTLA-Item.h | 50 +
src/asn/ngap/ASN_NGAP_XnExtTLAs.c | 50 +
src/asn/ngap/ASN_NGAP_XnExtTLAs.h | 44 +
src/asn/ngap/ASN_NGAP_XnGTP-TLAs.c | 49 +
src/asn/ngap/ASN_NGAP_XnGTP-TLAs.h | 42 +
src/asn/ngap/ASN_NGAP_XnTLAs.c | 49 +
src/asn/ngap/ASN_NGAP_XnTLAs.h | 42 +
.../ngap/ASN_NGAP_XnTNLConfigurationInfo.c | 74 +
.../ngap/ASN_NGAP_XnTNLConfigurationInfo.h | 50 +
src/asn/ngap/ASN_NGAP_asn_constant.h | 158 +
src/asn/ngap/CMakeLists.txt | 5 +
src/asn/rrc/ASN_RRC_AMF-Identifier.c | 67 +
src/asn/rrc/ASN_RRC_AMF-Identifier.h | 44 +
src/asn/rrc/ASN_RRC_ARFCN-ValueEUTRA.c | 61 +
src/asn/rrc/ASN_RRC_ARFCN-ValueEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_ARFCN-ValueNR.c | 61 +
src/asn/rrc/ASN_RRC_ARFCN-ValueNR.h | 44 +
src/asn/rrc/ASN_RRC_AS-Config.c | 205 +
src/asn/rrc/ASN_RRC_AS-Config.h | 52 +
src/asn/rrc/ASN_RRC_AS-Context.c | 257 +
src/asn/rrc/ASN_RRC_AS-Context.h | 69 +
src/asn/rrc/ASN_RRC_AccessStratumRelease.c | 67 +
src/asn/rrc/ASN_RRC_AccessStratumRelease.h | 60 +
.../rrc/ASN_RRC_AdditionalSpectrumEmission.c | 61 +
.../rrc/ASN_RRC_AdditionalSpectrumEmission.h | 44 +
.../ASN_RRC_AffectedCarrierFreqCombEUTRA.c | 49 +
.../ASN_RRC_AffectedCarrierFreqCombEUTRA.h | 42 +
.../ASN_RRC_AffectedCarrierFreqCombInfoMRDC.c | 186 +
.../ASN_RRC_AffectedCarrierFreqCombInfoMRDC.h | 66 +
.../rrc/ASN_RRC_AffectedCarrierFreqCombNR.c | 49 +
.../rrc/ASN_RRC_AffectedCarrierFreqCombNR.h | 42 +
src/asn/rrc/ASN_RRC_AggregatedBandwidth.c | 81 +
src/asn/rrc/ASN_RRC_AggregatedBandwidth.h | 65 +
src/asn/rrc/ASN_RRC_Alpha.c | 65 +
src/asn/rrc/ASN_RRC_Alpha.h | 57 +
src/asn/rrc/ASN_RRC_BCCH-BCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_BCCH-BCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_BCCH-BCH-MessageType.c | 91 +
src/asn/rrc/ASN_RRC_BCCH-BCH-MessageType.h | 59 +
src/asn/rrc/ASN_RRC_BCCH-Config.c | 100 +
src/asn/rrc/ASN_RRC_BCCH-Config.h | 53 +
src/asn/rrc/ASN_RRC_BCCH-DL-SCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_BCCH-DL-SCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_BCCH-DL-SCH-MessageType.c | 146 +
src/asn/rrc/ASN_RRC_BCCH-DL-SCH-MessageType.h | 74 +
src/asn/rrc/ASN_RRC_BFR-CSIRS-Resource.c | 205 +
src/asn/rrc/ASN_RRC_BFR-CSIRS-Resource.h | 54 +
src/asn/rrc/ASN_RRC_BFR-SSB-Resource.c | 90 +
src/asn/rrc/ASN_RRC_BFR-SSB-Resource.h | 46 +
src/asn/rrc/ASN_RRC_BSR-Config.c | 278 +
src/asn/rrc/ASN_RRC_BSR-Config.h | 97 +
src/asn/rrc/ASN_RRC_BWP-Downlink.c | 74 +
src/asn/rrc/ASN_RRC_BWP-Downlink.h | 50 +
src/asn/rrc/ASN_RRC_BWP-DownlinkCommon.c | 73 +
src/asn/rrc/ASN_RRC_BWP-DownlinkCommon.h | 50 +
src/asn/rrc/ASN_RRC_BWP-DownlinkDedicated.c | 83 +
src/asn/rrc/ASN_RRC_BWP-DownlinkDedicated.h | 52 +
src/asn/rrc/ASN_RRC_BWP-Id.c | 61 +
src/asn/rrc/ASN_RRC_BWP-Id.h | 44 +
src/asn/rrc/ASN_RRC_BWP-Uplink.c | 74 +
src/asn/rrc/ASN_RRC_BWP-Uplink.h | 50 +
src/asn/rrc/ASN_RRC_BWP-UplinkCommon.c | 83 +
src/asn/rrc/ASN_RRC_BWP-UplinkCommon.h | 52 +
src/asn/rrc/ASN_RRC_BWP-UplinkDedicated.c | 93 +
src/asn/rrc/ASN_RRC_BWP-UplinkDedicated.h | 54 +
src/asn/rrc/ASN_RRC_BWP.c | 146 +
src/asn/rrc/ASN_RRC_BWP.h | 50 +
src/asn/rrc/ASN_RRC_BandCombination-v1540.c | 137 +
src/asn/rrc/ASN_RRC_BandCombination-v1540.h | 51 +
src/asn/rrc/ASN_RRC_BandCombination-v1550.c | 50 +
src/asn/rrc/ASN_RRC_BandCombination-v1550.h | 40 +
src/asn/rrc/ASN_RRC_BandCombination-v1560.c | 129 +
src/asn/rrc/ASN_RRC_BandCombination-v1560.h | 54 +
src/asn/rrc/ASN_RRC_BandCombination.c | 269 +
src/asn/rrc/ASN_RRC_BandCombination.h | 67 +
src/asn/rrc/ASN_RRC_BandCombinationIndex.c | 61 +
src/asn/rrc/ASN_RRC_BandCombinationIndex.h | 44 +
src/asn/rrc/ASN_RRC_BandCombinationInfo.c | 133 +
src/asn/rrc/ASN_RRC_BandCombinationInfo.h | 49 +
src/asn/rrc/ASN_RRC_BandCombinationInfoList.c | 50 +
src/asn/rrc/ASN_RRC_BandCombinationInfoList.h | 44 +
src/asn/rrc/ASN_RRC_BandCombinationInfoSN.c | 60 +
src/asn/rrc/ASN_RRC_BandCombinationInfoSN.h | 42 +
.../rrc/ASN_RRC_BandCombinationList-v1540.c | 50 +
.../rrc/ASN_RRC_BandCombinationList-v1540.h | 44 +
.../rrc/ASN_RRC_BandCombinationList-v1550.c | 50 +
.../rrc/ASN_RRC_BandCombinationList-v1550.h | 44 +
.../rrc/ASN_RRC_BandCombinationList-v1560.c | 50 +
.../rrc/ASN_RRC_BandCombinationList-v1560.h | 44 +
src/asn/rrc/ASN_RRC_BandCombinationList.c | 50 +
src/asn/rrc/ASN_RRC_BandCombinationList.h | 44 +
src/asn/rrc/ASN_RRC_BandEntryIndex.c | 61 +
src/asn/rrc/ASN_RRC_BandEntryIndex.h | 44 +
src/asn/rrc/ASN_RRC_BandNR.c | 1764 +
src/asn/rrc/ASN_RRC_BandNR.h | 213 +
src/asn/rrc/ASN_RRC_BandParameters-v1540.c | 533 +
src/asn/rrc/ASN_RRC_BandParameters-v1540.h | 103 +
src/asn/rrc/ASN_RRC_BandParameters.c | 192 +
src/asn/rrc/ASN_RRC_BandParameters.h | 70 +
.../rrc/ASN_RRC_BeamFailureRecoveryConfig.c | 439 +
.../rrc/ASN_RRC_BeamFailureRecoveryConfig.h | 98 +
.../rrc/ASN_RRC_BeamManagementSSB-CSI-RS.c | 356 +
.../rrc/ASN_RRC_BeamManagementSSB-CSI-RS.h | 88 +
src/asn/rrc/ASN_RRC_BetaOffsets.c | 322 +
src/asn/rrc/ASN_RRC_BetaOffsets.h | 46 +
src/asn/rrc/ASN_RRC_CA-BandwidthClassEUTRA.c | 63 +
src/asn/rrc/ASN_RRC_CA-BandwidthClassEUTRA.h | 58 +
src/asn/rrc/ASN_RRC_CA-BandwidthClassNR.c | 85 +
src/asn/rrc/ASN_RRC_CA-BandwidthClassNR.h | 69 +
.../rrc/ASN_RRC_CA-ParametersEUTRA-v1560.c | 82 +
.../rrc/ASN_RRC_CA-ParametersEUTRA-v1560.h | 40 +
src/asn/rrc/ASN_RRC_CA-ParametersEUTRA.c | 350 +
src/asn/rrc/ASN_RRC_CA-ParametersEUTRA.h | 68 +
src/asn/rrc/ASN_RRC_CA-ParametersNR-v1540.c | 301 +
src/asn/rrc/ASN_RRC_CA-ParametersNR-v1540.h | 56 +
src/asn/rrc/ASN_RRC_CA-ParametersNR-v1550.c | 96 +
src/asn/rrc/ASN_RRC_CA-ParametersNR-v1550.h | 46 +
src/asn/rrc/ASN_RRC_CA-ParametersNR-v1560.c | 96 +
src/asn/rrc/ASN_RRC_CA-ParametersNR-v1560.h | 46 +
src/asn/rrc/ASN_RRC_CA-ParametersNR.c | 478 +
src/asn/rrc/ASN_RRC_CA-ParametersNR.h | 87 +
src/asn/rrc/ASN_RRC_CA-ParametersNRDC.c | 96 +
src/asn/rrc/ASN_RRC_CA-ParametersNRDC.h | 50 +
src/asn/rrc/ASN_RRC_CFRA-CSIRS-Resource.c | 203 +
src/asn/rrc/ASN_RRC_CFRA-CSIRS-Resource.h | 54 +
src/asn/rrc/ASN_RRC_CFRA-SSB-Resource.c | 90 +
src/asn/rrc/ASN_RRC_CFRA-SSB-Resource.h | 46 +
src/asn/rrc/ASN_RRC_CFRA.c | 598 +
src/asn/rrc/ASN_RRC_CFRA.h | 116 +
src/asn/rrc/ASN_RRC_CG-Config-IEs.c | 227 +
src/asn/rrc/ASN_RRC_CG-Config-IEs.h | 58 +
src/asn/rrc/ASN_RRC_CG-Config-v1540-IEs.c | 182 +
src/asn/rrc/ASN_RRC_CG-Config-v1540-IEs.h | 59 +
src/asn/rrc/ASN_RRC_CG-Config-v1560-IEs.c | 294 +
src/asn/rrc/ASN_RRC_CG-Config-v1560-IEs.h | 75 +
src/asn/rrc/ASN_RRC_CG-Config.c | 207 +
src/asn/rrc/ASN_RRC_CG-Config.h | 80 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo-IEs.c | 442 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo-IEs.h | 79 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1540-IEs.c | 137 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1540-IEs.h | 55 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1560-IEs.c | 329 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1560-IEs.h | 83 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo.c | 207 +
src/asn/rrc/ASN_RRC_CG-ConfigInfo.h | 80 +
src/asn/rrc/ASN_RRC_CG-UCI-OnPUSCH.c | 136 +
src/asn/rrc/ASN_RRC_CG-UCI-OnPUSCH.h | 61 +
src/asn/rrc/ASN_RRC_CGI-InfoEUTRA.c | 340 +
src/asn/rrc/ASN_RRC_CGI-InfoEUTRA.h | 75 +
src/asn/rrc/ASN_RRC_CGI-InfoNR.c | 157 +
src/asn/rrc/ASN_RRC_CGI-InfoNR.h | 57 +
.../rrc/ASN_RRC_CSI-AperiodicTriggerState.c | 124 +
.../rrc/ASN_RRC_CSI-AperiodicTriggerState.h | 53 +
.../ASN_RRC_CSI-AperiodicTriggerStateList.c | 50 +
.../ASN_RRC_CSI-AperiodicTriggerStateList.h | 44 +
.../ASN_RRC_CSI-AssociatedReportConfigInfo.c | 384 +
.../ASN_RRC_CSI-AssociatedReportConfigInfo.h | 79 +
src/asn/rrc/ASN_RRC_CSI-FrequencyOccupation.c | 120 +
src/asn/rrc/ASN_RRC_CSI-FrequencyOccupation.h | 45 +
src/asn/rrc/ASN_RRC_CSI-IM-Resource.c | 406 +
src/asn/rrc/ASN_RRC_CSI-IM-Resource.h | 97 +
src/asn/rrc/ASN_RRC_CSI-IM-ResourceId.c | 61 +
src/asn/rrc/ASN_RRC_CSI-IM-ResourceId.h | 44 +
src/asn/rrc/ASN_RRC_CSI-IM-ResourceSet.c | 133 +
src/asn/rrc/ASN_RRC_CSI-IM-ResourceSet.h | 53 +
src/asn/rrc/ASN_RRC_CSI-IM-ResourceSetId.c | 61 +
src/asn/rrc/ASN_RRC_CSI-IM-ResourceSetId.h | 44 +
src/asn/rrc/ASN_RRC_CSI-MeasConfig.c | 1272 +
src/asn/rrc/ASN_RRC_CSI-MeasConfig.h | 150 +
src/asn/rrc/ASN_RRC_CSI-RS-CellMobility.c | 337 +
src/asn/rrc/ASN_RRC_CSI-RS-CellMobility.h | 76 +
src/asn/rrc/ASN_RRC_CSI-RS-ForTracking.c | 200 +
src/asn/rrc/ASN_RRC_CSI-RS-ForTracking.h | 43 +
.../ASN_RRC_CSI-RS-IM-ReceptionForFeedback.c | 264 +
.../ASN_RRC_CSI-RS-IM-ReceptionForFeedback.h | 56 +
src/asn/rrc/ASN_RRC_CSI-RS-Index.c | 61 +
src/asn/rrc/ASN_RRC_CSI-RS-Index.h | 44 +
.../rrc/ASN_RRC_CSI-RS-ProcFrameworkForSRS.c | 200 +
.../rrc/ASN_RRC_CSI-RS-ProcFrameworkForSRS.h | 43 +
.../rrc/ASN_RRC_CSI-RS-Resource-Mobility.c | 575 +
.../rrc/ASN_RRC_CSI-RS-Resource-Mobility.h | 96 +
.../ASN_RRC_CSI-RS-ResourceConfigMobility.c | 191 +
.../ASN_RRC_CSI-RS-ResourceConfigMobility.h | 62 +
src/asn/rrc/ASN_RRC_CSI-RS-ResourceMapping.c | 618 +
src/asn/rrc/ASN_RRC_CSI-RS-ResourceMapping.h | 116 +
src/asn/rrc/ASN_RRC_CSI-ReportConfig.c | 2679 +
src/asn/rrc/ASN_RRC_CSI-ReportConfig.h | 326 +
src/asn/rrc/ASN_RRC_CSI-ReportConfigId.c | 61 +
src/asn/rrc/ASN_RRC_CSI-ReportConfigId.h | 44 +
src/asn/rrc/ASN_RRC_CSI-ReportFramework.c | 384 +
src/asn/rrc/ASN_RRC_CSI-ReportFramework.h | 59 +
.../ASN_RRC_CSI-ReportPeriodicityAndOffset.c | 442 +
.../ASN_RRC_CSI-ReportPeriodicityAndOffset.h | 68 +
src/asn/rrc/ASN_RRC_CSI-ResourceConfig.c | 456 +
src/asn/rrc/ASN_RRC_CSI-ResourceConfig.h | 98 +
src/asn/rrc/ASN_RRC_CSI-ResourceConfigId.c | 61 +
src/asn/rrc/ASN_RRC_CSI-ResourceConfigId.h | 44 +
...ASN_RRC_CSI-ResourcePeriodicityAndOffset.c | 562 +
...ASN_RRC_CSI-ResourcePeriodicityAndOffset.h | 74 +
src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSet.c | 133 +
src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSet.h | 53 +
src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSetId.c | 61 +
src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSetId.h | 44 +
...C_CSI-SemiPersistentOnPUSCH-TriggerState.c | 50 +
...C_CSI-SemiPersistentOnPUSCH-TriggerState.h | 44 +
...I-SemiPersistentOnPUSCH-TriggerStateList.c | 50 +
...I-SemiPersistentOnPUSCH-TriggerStateList.h | 44 +
.../ASN_RRC_CandidateServingFreqListEUTRA.c | 49 +
.../ASN_RRC_CandidateServingFreqListEUTRA.h | 42 +
.../rrc/ASN_RRC_CandidateServingFreqListNR.c | 49 +
.../rrc/ASN_RRC_CandidateServingFreqListNR.h | 42 +
src/asn/rrc/ASN_RRC_CarrierFreqEUTRA.c | 328 +
src/asn/rrc/ASN_RRC_CarrierFreqEUTRA.h | 71 +
src/asn/rrc/ASN_RRC_CarrierFreqListEUTRA.c | 50 +
src/asn/rrc/ASN_RRC_CarrierFreqListEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_CarrierInfoNR.c | 73 +
src/asn/rrc/ASN_RRC_CarrierInfoNR.h | 50 +
.../ASN_RRC_CellAccessRelatedInfo-EUTRA-5GC.c | 82 +
.../ASN_RRC_CellAccessRelatedInfo-EUTRA-5GC.h | 46 +
.../ASN_RRC_CellAccessRelatedInfo-EUTRA-EPC.c | 142 +
.../ASN_RRC_CellAccessRelatedInfo-EUTRA-EPC.h | 43 +
src/asn/rrc/ASN_RRC_CellAccessRelatedInfo.c | 106 +
src/asn/rrc/ASN_RRC_CellAccessRelatedInfo.h | 52 +
src/asn/rrc/ASN_RRC_CellGroupConfig.c | 518 +
src/asn/rrc/ASN_RRC_CellGroupConfig.h | 93 +
src/asn/rrc/ASN_RRC_CellGroupId.c | 61 +
src/asn/rrc/ASN_RRC_CellGroupId.h | 44 +
src/asn/rrc/ASN_RRC_CellIdentity-EUTRA-5GC.c | 128 +
src/asn/rrc/ASN_RRC_CellIdentity-EUTRA-5GC.h | 53 +
src/asn/rrc/ASN_RRC_CellIdentity.c | 67 +
src/asn/rrc/ASN_RRC_CellIdentity.h | 44 +
.../rrc/ASN_RRC_CellReselectionPriorities.c | 132 +
.../rrc/ASN_RRC_CellReselectionPriorities.h | 63 +
src/asn/rrc/ASN_RRC_CellReselectionPriority.c | 61 +
src/asn/rrc/ASN_RRC_CellReselectionPriority.h | 44 +
.../rrc/ASN_RRC_CellReselectionSubPriority.c | 57 +
.../rrc/ASN_RRC_CellReselectionSubPriority.h | 53 +
src/asn/rrc/ASN_RRC_CellsToAddMod.c | 60 +
src/asn/rrc/ASN_RRC_CellsToAddMod.h | 42 +
src/asn/rrc/ASN_RRC_CellsToAddModList.c | 50 +
src/asn/rrc/ASN_RRC_CellsToAddModList.h | 44 +
src/asn/rrc/ASN_RRC_CellsTriggeredList.c | 103 +
src/asn/rrc/ASN_RRC_CellsTriggeredList.h | 63 +
src/asn/rrc/ASN_RRC_CipheringAlgorithm.c | 67 +
src/asn/rrc/ASN_RRC_CipheringAlgorithm.h | 60 +
src/asn/rrc/ASN_RRC_CodebookConfig.c | 2760 +
src/asn/rrc/ASN_RRC_CodebookConfig.h | 267 +
src/asn/rrc/ASN_RRC_CodebookParameters.c | 1090 +
src/asn/rrc/ASN_RRC_CodebookParameters.h | 136 +
src/asn/rrc/ASN_RRC_ConfigRestrictInfoSCG.c | 479 +
src/asn/rrc/ASN_RRC_ConfigRestrictInfoSCG.h | 82 +
src/asn/rrc/ASN_RRC_ConfigRestrictModReqSCG.c | 158 +
src/asn/rrc/ASN_RRC_ConfigRestrictModReqSCG.h | 56 +
src/asn/rrc/ASN_RRC_ConfiguredGrantConfig.c | 1256 +
src/asn/rrc/ASN_RRC_ConfiguredGrantConfig.h | 182 +
src/asn/rrc/ASN_RRC_ConnEstFailureControl.c | 210 +
src/asn/rrc/ASN_RRC_ConnEstFailureControl.h | 63 +
src/asn/rrc/ASN_RRC_ControlResourceSet.c | 709 +
src/asn/rrc/ASN_RRC_ControlResourceSet.h | 114 +
src/asn/rrc/ASN_RRC_ControlResourceSetId.c | 61 +
src/asn/rrc/ASN_RRC_ControlResourceSetId.h | 44 +
src/asn/rrc/ASN_RRC_ControlResourceSetZero.c | 61 +
src/asn/rrc/ASN_RRC_ControlResourceSetZero.h | 44 +
src/asn/rrc/ASN_RRC_CounterCheck-IEs.c | 100 +
src/asn/rrc/ASN_RRC_CounterCheck-IEs.h | 47 +
src/asn/rrc/ASN_RRC_CounterCheck.c | 143 +
src/asn/rrc/ASN_RRC_CounterCheck.h | 65 +
.../rrc/ASN_RRC_CounterCheckResponse-IEs.c | 100 +
.../rrc/ASN_RRC_CounterCheckResponse-IEs.h | 47 +
src/asn/rrc/ASN_RRC_CounterCheckResponse.c | 143 +
src/asn/rrc/ASN_RRC_CounterCheckResponse.h | 65 +
.../ASN_RRC_CrossCarrierSchedulingConfig.c | 230 +
.../ASN_RRC_CrossCarrierSchedulingConfig.h | 74 +
src/asn/rrc/ASN_RRC_DL-AM-RLC.c | 72 +
src/asn/rrc/ASN_RRC_DL-AM-RLC.h | 44 +
src/asn/rrc/ASN_RRC_DL-CCCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_DL-CCCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_DL-CCCH-MessageType.c | 166 +
src/asn/rrc/ASN_RRC_DL-CCCH-MessageType.h | 79 +
src/asn/rrc/ASN_RRC_DL-DCCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_DL-DCCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_DL-DCCH-MessageType.c | 293 +
src/asn/rrc/ASN_RRC_DL-DCCH-MessageType.h | 110 +
src/asn/rrc/ASN_RRC_DL-UM-RLC.c | 62 +
src/asn/rrc/ASN_RRC_DL-UM-RLC.h | 42 +
.../rrc/ASN_RRC_DLInformationTransfer-IEs.c | 100 +
.../rrc/ASN_RRC_DLInformationTransfer-IEs.h | 47 +
src/asn/rrc/ASN_RRC_DLInformationTransfer.c | 143 +
src/asn/rrc/ASN_RRC_DLInformationTransfer.h | 65 +
src/asn/rrc/ASN_RRC_DMRS-DownlinkConfig.c | 299 +
src/asn/rrc/ASN_RRC_DMRS-DownlinkConfig.h | 69 +
src/asn/rrc/ASN_RRC_DMRS-UplinkConfig.c | 537 +
src/asn/rrc/ASN_RRC_DMRS-UplinkConfig.h | 98 +
src/asn/rrc/ASN_RRC_DRB-CountInfo.c | 212 +
src/asn/rrc/ASN_RRC_DRB-CountInfo.h | 45 +
src/asn/rrc/ASN_RRC_DRB-CountInfoList.c | 50 +
src/asn/rrc/ASN_RRC_DRB-CountInfoList.h | 44 +
src/asn/rrc/ASN_RRC_DRB-CountMSB-Info.c | 130 +
src/asn/rrc/ASN_RRC_DRB-CountMSB-Info.h | 43 +
src/asn/rrc/ASN_RRC_DRB-CountMSB-InfoList.c | 50 +
src/asn/rrc/ASN_RRC_DRB-CountMSB-InfoList.h | 44 +
src/asn/rrc/ASN_RRC_DRB-Identity.c | 61 +
src/asn/rrc/ASN_RRC_DRB-Identity.h | 44 +
src/asn/rrc/ASN_RRC_DRB-ToAddMod.c | 266 +
src/asn/rrc/ASN_RRC_DRB-ToAddMod.h | 79 +
src/asn/rrc/ASN_RRC_DRB-ToAddModList.c | 50 +
src/asn/rrc/ASN_RRC_DRB-ToAddModList.h | 44 +
src/asn/rrc/ASN_RRC_DRB-ToReleaseList.c | 49 +
src/asn/rrc/ASN_RRC_DRB-ToReleaseList.h | 42 +
src/asn/rrc/ASN_RRC_DRX-Config.c | 1753 +
src/asn/rrc/ASN_RRC_DRX-Config.h | 297 +
src/asn/rrc/ASN_RRC_DRX-Info.c | 1085 +
src/asn/rrc/ASN_RRC_DRX-Info.h | 136 +
src/asn/rrc/ASN_RRC_DataInactivityTimer.c | 81 +
src/asn/rrc/ASN_RRC_DataInactivityTimer.h | 65 +
src/asn/rrc/ASN_RRC_DedicatedNAS-Message.c | 31 +
src/asn/rrc/ASN_RRC_DedicatedNAS-Message.h | 43 +
src/asn/rrc/ASN_RRC_DelayBudgetReport.c | 128 +
src/asn/rrc/ASN_RRC_DelayBudgetReport.h | 76 +
src/asn/rrc/ASN_RRC_DownlinkConfigCommon.c | 64 +
src/asn/rrc/ASN_RRC_DownlinkConfigCommon.h | 48 +
src/asn/rrc/ASN_RRC_DownlinkConfigCommonSIB.c | 80 +
src/asn/rrc/ASN_RRC_DownlinkConfigCommonSIB.h | 50 +
src/asn/rrc/ASN_RRC_DownlinkPreemption.c | 230 +
src/asn/rrc/ASN_RRC_DownlinkPreemption.h | 66 +
src/asn/rrc/ASN_RRC_DummyA.c | 502 +
src/asn/rrc/ASN_RRC_DummyA.h | 166 +
src/asn/rrc/ASN_RRC_DummyB.c | 282 +
src/asn/rrc/ASN_RRC_DummyB.h | 62 +
src/asn/rrc/ASN_RRC_DummyC.c | 332 +
src/asn/rrc/ASN_RRC_DummyC.h | 65 +
src/asn/rrc/ASN_RRC_DummyD.c | 376 +
src/asn/rrc/ASN_RRC_DummyD.h | 67 +
src/asn/rrc/ASN_RRC_DummyE.c | 320 +
src/asn/rrc/ASN_RRC_DummyE.h | 62 +
src/asn/rrc/ASN_RRC_DummyF.c | 200 +
src/asn/rrc/ASN_RRC_DummyF.h | 43 +
src/asn/rrc/ASN_RRC_DummyG.c | 222 +
src/asn/rrc/ASN_RRC_DummyG.h | 66 +
src/asn/rrc/ASN_RRC_DummyH.c | 200 +
src/asn/rrc/ASN_RRC_DummyH.h | 43 +
src/asn/rrc/ASN_RRC_DummyI.c | 158 +
src/asn/rrc/ASN_RRC_DummyI.h | 55 +
.../rrc/ASN_RRC_EUTRA-AllowedMeasBandwidth.c | 61 +
.../rrc/ASN_RRC_EUTRA-AllowedMeasBandwidth.h | 55 +
src/asn/rrc/ASN_RRC_EUTRA-BlackCell.c | 60 +
src/asn/rrc/ASN_RRC_EUTRA-BlackCell.h | 42 +
src/asn/rrc/ASN_RRC_EUTRA-Cell.c | 70 +
src/asn/rrc/ASN_RRC_EUTRA-Cell.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-CellIndex.c | 61 +
src/asn/rrc/ASN_RRC_EUTRA-CellIndex.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-CellIndexList.c | 49 +
src/asn/rrc/ASN_RRC_EUTRA-CellIndexList.h | 42 +
src/asn/rrc/ASN_RRC_EUTRA-FreqBlackCellList.c | 50 +
src/asn/rrc/ASN_RRC_EUTRA-FreqBlackCellList.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellInfo.c | 142 +
src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellInfo.h | 45 +
src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellList.c | 50 +
src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellList.h | 44 +
.../rrc/ASN_RRC_EUTRA-MBSFN-SubframeConfig.c | 418 +
.../rrc/ASN_RRC_EUTRA-MBSFN-SubframeConfig.h | 89 +
.../ASN_RRC_EUTRA-MBSFN-SubframeConfigList.c | 50 +
.../ASN_RRC_EUTRA-MBSFN-SubframeConfigList.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfo.c | 63 +
src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfo.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfoList.c | 50 +
src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfoList.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxList.c | 50 +
src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxList.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxValue.c | 122 +
src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxValue.h | 41 +
src/asn/rrc/ASN_RRC_EUTRA-Parameters.c | 147 +
src/asn/rrc/ASN_RRC_EUTRA-Parameters.h | 57 +
src/asn/rrc/ASN_RRC_EUTRA-ParametersCommon.c | 349 +
src/asn/rrc/ASN_RRC_EUTRA-ParametersCommon.h | 72 +
.../rrc/ASN_RRC_EUTRA-ParametersXDD-Diff.c | 96 +
.../rrc/ASN_RRC_EUTRA-ParametersXDD-Diff.h | 50 +
src/asn/rrc/ASN_RRC_EUTRA-PhysCellId.c | 61 +
src/asn/rrc/ASN_RRC_EUTRA-PhysCellId.h | 44 +
src/asn/rrc/ASN_RRC_EUTRA-PhysCellIdRange.c | 136 +
src/asn/rrc/ASN_RRC_EUTRA-PhysCellIdRange.h | 63 +
.../rrc/ASN_RRC_EUTRA-PresenceAntennaPort1.c | 31 +
.../rrc/ASN_RRC_EUTRA-PresenceAntennaPort1.h | 43 +
src/asn/rrc/ASN_RRC_EUTRA-Q-OffsetRange.c | 111 +
src/asn/rrc/ASN_RRC_EUTRA-Q-OffsetRange.h | 80 +
src/asn/rrc/ASN_RRC_EUTRA-RSTD-Info.c | 90 +
src/asn/rrc/ASN_RRC_EUTRA-RSTD-Info.h | 46 +
src/asn/rrc/ASN_RRC_EUTRA-RSTD-InfoList.c | 50 +
src/asn/rrc/ASN_RRC_EUTRA-RSTD-InfoList.h | 44 +
src/asn/rrc/ASN_RRC_EstablishmentCause.c | 81 +
src/asn/rrc/ASN_RRC_EstablishmentCause.h | 65 +
src/asn/rrc/ASN_RRC_EventTriggerConfig.c | 887 +
src/asn/rrc/ASN_RRC_EventTriggerConfig.h | 164 +
.../rrc/ASN_RRC_EventTriggerConfigInterRAT.c | 398 +
.../rrc/ASN_RRC_EventTriggerConfigInterRAT.h | 117 +
src/asn/rrc/ASN_RRC_FR-Info.c | 106 +
src/asn/rrc/ASN_RRC_FR-Info.h | 49 +
src/asn/rrc/ASN_RRC_FR-InfoList.c | 50 +
src/asn/rrc/ASN_RRC_FR-InfoList.h | 44 +
src/asn/rrc/ASN_RRC_FailureInfoRLC-Bearer.c | 120 +
src/asn/rrc/ASN_RRC_FailureInfoRLC-Bearer.h | 53 +
src/asn/rrc/ASN_RRC_FailureInformation-IEs.c | 101 +
src/asn/rrc/ASN_RRC_FailureInformation-IEs.h | 49 +
src/asn/rrc/ASN_RRC_FailureInformation.c | 133 +
src/asn/rrc/ASN_RRC_FailureInformation.h | 63 +
src/asn/rrc/ASN_RRC_FailureReportSCG-EUTRA.c | 131 +
src/asn/rrc/ASN_RRC_FailureReportSCG-EUTRA.h | 63 +
src/asn/rrc/ASN_RRC_FailureReportSCG.c | 157 +
src/asn/rrc/ASN_RRC_FailureReportSCG.h | 63 +
src/asn/rrc/ASN_RRC_FeatureSet.c | 168 +
src/asn/rrc/ASN_RRC_FeatureSet.h | 68 +
src/asn/rrc/ASN_RRC_FeatureSetCombination.c | 50 +
src/asn/rrc/ASN_RRC_FeatureSetCombination.h | 44 +
src/asn/rrc/ASN_RRC_FeatureSetCombinationId.c | 61 +
src/asn/rrc/ASN_RRC_FeatureSetCombinationId.h | 44 +
.../rrc/ASN_RRC_FeatureSetDownlink-v1540.c | 822 +
.../rrc/ASN_RRC_FeatureSetDownlink-v1540.h | 128 +
src/asn/rrc/ASN_RRC_FeatureSetDownlink.c | 1464 +
src/asn/rrc/ASN_RRC_FeatureSetDownlink.h | 188 +
src/asn/rrc/ASN_RRC_FeatureSetDownlinkId.c | 61 +
src/asn/rrc/ASN_RRC_FeatureSetDownlinkId.h | 44 +
.../rrc/ASN_RRC_FeatureSetDownlinkPerCC-Id.c | 61 +
.../rrc/ASN_RRC_FeatureSetDownlinkPerCC-Id.h | 44 +
src/asn/rrc/ASN_RRC_FeatureSetDownlinkPerCC.c | 136 +
src/asn/rrc/ASN_RRC_FeatureSetDownlinkPerCC.h | 54 +
.../rrc/ASN_RRC_FeatureSetEUTRA-DownlinkId.c | 61 +
.../rrc/ASN_RRC_FeatureSetEUTRA-DownlinkId.h | 44 +
.../rrc/ASN_RRC_FeatureSetEUTRA-UplinkId.c | 61 +
.../rrc/ASN_RRC_FeatureSetEUTRA-UplinkId.h | 44 +
src/asn/rrc/ASN_RRC_FeatureSetEntryIndex.c | 61 +
src/asn/rrc/ASN_RRC_FeatureSetEntryIndex.h | 44 +
src/asn/rrc/ASN_RRC_FeatureSetUplink-v1540.c | 334 +
src/asn/rrc/ASN_RRC_FeatureSetUplink-v1540.h | 72 +
src/asn/rrc/ASN_RRC_FeatureSetUplink.c | 773 +
src/asn/rrc/ASN_RRC_FeatureSetUplink.h | 125 +
src/asn/rrc/ASN_RRC_FeatureSetUplinkId.c | 61 +
src/asn/rrc/ASN_RRC_FeatureSetUplinkId.h | 44 +
.../rrc/ASN_RRC_FeatureSetUplinkPerCC-Id.c | 61 +
.../rrc/ASN_RRC_FeatureSetUplinkPerCC-Id.h | 44 +
.../rrc/ASN_RRC_FeatureSetUplinkPerCC-v1540.c | 165 +
.../rrc/ASN_RRC_FeatureSetUplinkPerCC-v1540.h | 46 +
src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC.c | 231 +
src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC.h | 62 +
src/asn/rrc/ASN_RRC_FeatureSets.c | 675 +
src/asn/rrc/ASN_RRC_FeatureSets.h | 100 +
src/asn/rrc/ASN_RRC_FeatureSetsPerBand.c | 50 +
src/asn/rrc/ASN_RRC_FeatureSetsPerBand.h | 44 +
src/asn/rrc/ASN_RRC_FilterCoefficient.c | 83 +
src/asn/rrc/ASN_RRC_FilterCoefficient.h | 68 +
src/asn/rrc/ASN_RRC_FilterConfig.c | 141 +
src/asn/rrc/ASN_RRC_FilterConfig.h | 42 +
src/asn/rrc/ASN_RRC_FreqBandIndicatorEUTRA.c | 61 +
src/asn/rrc/ASN_RRC_FreqBandIndicatorEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_FreqBandIndicatorNR.c | 61 +
src/asn/rrc/ASN_RRC_FreqBandIndicatorNR.h | 44 +
src/asn/rrc/ASN_RRC_FreqBandInformation.c | 64 +
src/asn/rrc/ASN_RRC_FreqBandInformation.h | 55 +
.../rrc/ASN_RRC_FreqBandInformationEUTRA.c | 72 +
.../rrc/ASN_RRC_FreqBandInformationEUTRA.h | 43 +
src/asn/rrc/ASN_RRC_FreqBandInformationNR.c | 152 +
src/asn/rrc/ASN_RRC_FreqBandInformationNR.h | 46 +
src/asn/rrc/ASN_RRC_FreqBandList.c | 50 +
src/asn/rrc/ASN_RRC_FreqBandList.h | 44 +
src/asn/rrc/ASN_RRC_FreqPriorityEUTRA.c | 72 +
src/asn/rrc/ASN_RRC_FreqPriorityEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_FreqPriorityListEUTRA.c | 50 +
src/asn/rrc/ASN_RRC_FreqPriorityListEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_FreqPriorityListNR.c | 50 +
src/asn/rrc/ASN_RRC_FreqPriorityListNR.h | 44 +
src/asn/rrc/ASN_RRC_FreqPriorityNR.c | 72 +
src/asn/rrc/ASN_RRC_FreqPriorityNR.h | 44 +
src/asn/rrc/ASN_RRC_FreqSeparationClass.c | 57 +
src/asn/rrc/ASN_RRC_FreqSeparationClass.h | 55 +
src/asn/rrc/ASN_RRC_FrequencyInfoDL-SIB.c | 174 +
src/asn/rrc/ASN_RRC_FrequencyInfoDL-SIB.h | 53 +
src/asn/rrc/ASN_RRC_FrequencyInfoDL.c | 156 +
src/asn/rrc/ASN_RRC_FrequencyInfoDL.h | 58 +
src/asn/rrc/ASN_RRC_FrequencyInfoUL-SIB.c | 211 +
src/asn/rrc/ASN_RRC_FrequencyInfoUL-SIB.h | 67 +
src/asn/rrc/ASN_RRC_FrequencyInfoUL.c | 221 +
src/asn/rrc/ASN_RRC_FrequencyInfoUL.h | 69 +
src/asn/rrc/ASN_RRC_GapConfig.c | 367 +
src/asn/rrc/ASN_RRC_GapConfig.h | 84 +
.../ASN_RRC_GeneralParametersMRDC-XDD-Diff.c | 258 +
.../ASN_RRC_GeneralParametersMRDC-XDD-Diff.h | 65 +
src/asn/rrc/ASN_RRC_HandoverCommand-IEs.c | 116 +
src/asn/rrc/ASN_RRC_HandoverCommand-IEs.h | 45 +
src/asn/rrc/ASN_RRC_HandoverCommand.c | 207 +
src/asn/rrc/ASN_RRC_HandoverCommand.h | 80 +
...N_RRC_HandoverPreparationInformation-IEs.c | 123 +
...N_RRC_HandoverPreparationInformation-IEs.h | 53 +
.../ASN_RRC_HandoverPreparationInformation.c | 207 +
.../ASN_RRC_HandoverPreparationInformation.h | 80 +
src/asn/rrc/ASN_RRC_Hysteresis.c | 61 +
src/asn/rrc/ASN_RRC_Hysteresis.h | 44 +
src/asn/rrc/ASN_RRC_I-RNTI-Value.c | 67 +
src/asn/rrc/ASN_RRC_I-RNTI-Value.h | 44 +
src/asn/rrc/ASN_RRC_IMS-Parameters.c | 64 +
src/asn/rrc/ASN_RRC_IMS-Parameters.h | 48 +
src/asn/rrc/ASN_RRC_IMS-ParametersCommon.c | 195 +
src/asn/rrc/ASN_RRC_IMS-ParametersCommon.h | 60 +
src/asn/rrc/ASN_RRC_IMS-ParametersFRX-Diff.c | 96 +
src/asn/rrc/ASN_RRC_IMS-ParametersFRX-Diff.h | 50 +
.../ASN_RRC_INT-ConfigurationPerServingCell.c | 90 +
.../ASN_RRC_INT-ConfigurationPerServingCell.h | 42 +
src/asn/rrc/ASN_RRC_InitialUE-Identity.c | 134 +
src/asn/rrc/ASN_RRC_InitialUE-Identity.h | 52 +
src/asn/rrc/ASN_RRC_IntegrityProtAlgorithm.c | 67 +
src/asn/rrc/ASN_RRC_IntegrityProtAlgorithm.h | 60 +
src/asn/rrc/ASN_RRC_InterFreqBlackCellList.c | 50 +
src/asn/rrc/ASN_RRC_InterFreqBlackCellList.h | 44 +
.../rrc/ASN_RRC_InterFreqCarrierFreqInfo.c | 396 +
.../rrc/ASN_RRC_InterFreqCarrierFreqInfo.h | 95 +
.../rrc/ASN_RRC_InterFreqCarrierFreqList.c | 50 +
.../rrc/ASN_RRC_InterFreqCarrierFreqList.h | 44 +
src/asn/rrc/ASN_RRC_InterFreqNeighCellInfo.c | 182 +
src/asn/rrc/ASN_RRC_InterFreqNeighCellInfo.h | 50 +
src/asn/rrc/ASN_RRC_InterFreqNeighCellList.c | 50 +
src/asn/rrc/ASN_RRC_InterFreqNeighCellList.h | 44 +
src/asn/rrc/ASN_RRC_InterRAT-Parameters.c | 53 +
src/asn/rrc/ASN_RRC_InterRAT-Parameters.h | 46 +
src/asn/rrc/ASN_RRC_IntraFreqBlackCellList.c | 50 +
src/asn/rrc/ASN_RRC_IntraFreqBlackCellList.h | 44 +
src/asn/rrc/ASN_RRC_IntraFreqNeighCellInfo.c | 182 +
src/asn/rrc/ASN_RRC_IntraFreqNeighCellInfo.h | 50 +
src/asn/rrc/ASN_RRC_IntraFreqNeighCellList.c | 50 +
src/asn/rrc/ASN_RRC_IntraFreqNeighCellList.h | 44 +
...SN_RRC_LocationMeasurementIndication-IEs.c | 100 +
...SN_RRC_LocationMeasurementIndication-IEs.h | 47 +
.../ASN_RRC_LocationMeasurementIndication.c | 133 +
.../ASN_RRC_LocationMeasurementIndication.h | 63 +
src/asn/rrc/ASN_RRC_LocationMeasurementInfo.c | 63 +
src/asn/rrc/ASN_RRC_LocationMeasurementInfo.h | 60 +
src/asn/rrc/ASN_RRC_LogicalChannelConfig.c | 721 +
src/asn/rrc/ASN_RRC_LogicalChannelConfig.h | 147 +
src/asn/rrc/ASN_RRC_LogicalChannelIdentity.c | 61 +
src/asn/rrc/ASN_RRC_LogicalChannelIdentity.h | 44 +
src/asn/rrc/ASN_RRC_MAC-CellGroupConfig.c | 171 +
src/asn/rrc/ASN_RRC_MAC-CellGroupConfig.h | 64 +
src/asn/rrc/ASN_RRC_MAC-Parameters.c | 64 +
src/asn/rrc/ASN_RRC_MAC-Parameters.h | 44 +
src/asn/rrc/ASN_RRC_MAC-ParametersCommon.c | 357 +
src/asn/rrc/ASN_RRC_MAC-ParametersCommon.h | 75 +
src/asn/rrc/ASN_RRC_MAC-ParametersXDD-Diff.c | 366 +
src/asn/rrc/ASN_RRC_MAC-ParametersXDD-Diff.h | 75 +
src/asn/rrc/ASN_RRC_MCC-MNC-Digit.c | 61 +
src/asn/rrc/ASN_RRC_MCC-MNC-Digit.h | 44 +
src/asn/rrc/ASN_RRC_MCC.c | 49 +
src/asn/rrc/ASN_RRC_MCC.h | 42 +
src/asn/rrc/ASN_RRC_MIB.c | 406 +
src/asn/rrc/ASN_RRC_MIB.h | 72 +
src/asn/rrc/ASN_RRC_MIMO-LayersDL.c | 55 +
src/asn/rrc/ASN_RRC_MIMO-LayersDL.h | 52 +
src/asn/rrc/ASN_RRC_MIMO-LayersUL.c | 55 +
src/asn/rrc/ASN_RRC_MIMO-LayersUL.h | 52 +
src/asn/rrc/ASN_RRC_MIMO-ParametersPerBand.c | 2458 +
src/asn/rrc/ASN_RRC_MIMO-ParametersPerBand.h | 310 +
src/asn/rrc/ASN_RRC_MNC.c | 49 +
src/asn/rrc/ASN_RRC_MNC.h | 42 +
src/asn/rrc/ASN_RRC_MRDC-AssistanceInfo.c | 124 +
src/asn/rrc/ASN_RRC_MRDC-AssistanceInfo.h | 53 +
src/asn/rrc/ASN_RRC_MRDC-Parameters.c | 635 +
src/asn/rrc/ASN_RRC_MRDC-Parameters.h | 104 +
.../ASN_RRC_MRDC-SecondaryCellGroupConfig.c | 186 +
.../ASN_RRC_MRDC-SecondaryCellGroupConfig.h | 63 +
src/asn/rrc/ASN_RRC_MasterKeyUpdate.c | 72 +
src/asn/rrc/ASN_RRC_MasterKeyUpdate.h | 48 +
src/asn/rrc/ASN_RRC_MeasAndMobParameters.c | 75 +
src/asn/rrc/ASN_RRC_MeasAndMobParameters.h | 46 +
.../rrc/ASN_RRC_MeasAndMobParametersCommon.c | 827 +
.../rrc/ASN_RRC_MeasAndMobParametersCommon.h | 122 +
.../ASN_RRC_MeasAndMobParametersFRX-Diff.c | 723 +
.../ASN_RRC_MeasAndMobParametersFRX-Diff.h | 113 +
.../ASN_RRC_MeasAndMobParametersMRDC-Common.c | 96 +
.../ASN_RRC_MeasAndMobParametersMRDC-Common.h | 46 +
...SN_RRC_MeasAndMobParametersMRDC-FRX-Diff.c | 96 +
...SN_RRC_MeasAndMobParametersMRDC-FRX-Diff.h | 46 +
..._MeasAndMobParametersMRDC-XDD-Diff-v1560.c | 96 +
..._MeasAndMobParametersMRDC-XDD-Diff-v1560.h | 46 +
...SN_RRC_MeasAndMobParametersMRDC-XDD-Diff.c | 150 +
...SN_RRC_MeasAndMobParametersMRDC-XDD-Diff.h | 51 +
.../ASN_RRC_MeasAndMobParametersMRDC-v1560.c | 53 +
.../ASN_RRC_MeasAndMobParametersMRDC-v1560.h | 42 +
.../rrc/ASN_RRC_MeasAndMobParametersMRDC.c | 75 +
.../rrc/ASN_RRC_MeasAndMobParametersMRDC.h | 46 +
.../ASN_RRC_MeasAndMobParametersXDD-Diff.c | 357 +
.../ASN_RRC_MeasAndMobParametersXDD-Diff.h | 75 +
src/asn/rrc/ASN_RRC_MeasConfig.c | 205 +
src/asn/rrc/ASN_RRC_MeasConfig.h | 81 +
src/asn/rrc/ASN_RRC_MeasConfigMN.c | 248 +
src/asn/rrc/ASN_RRC_MeasConfigMN.h | 70 +
src/asn/rrc/ASN_RRC_MeasConfigSN.c | 126 +
src/asn/rrc/ASN_RRC_MeasConfigSN.h | 53 +
src/asn/rrc/ASN_RRC_MeasGapConfig.c | 118 +
src/asn/rrc/ASN_RRC_MeasGapConfig.h | 53 +
src/asn/rrc/ASN_RRC_MeasGapSharingConfig.c | 118 +
src/asn/rrc/ASN_RRC_MeasGapSharingConfig.h | 53 +
src/asn/rrc/ASN_RRC_MeasGapSharingScheme.c | 57 +
src/asn/rrc/ASN_RRC_MeasGapSharingScheme.h | 53 +
src/asn/rrc/ASN_RRC_MeasId.c | 61 +
src/asn/rrc/ASN_RRC_MeasId.h | 44 +
src/asn/rrc/ASN_RRC_MeasIdToAddMod.c | 70 +
src/asn/rrc/ASN_RRC_MeasIdToAddMod.h | 44 +
src/asn/rrc/ASN_RRC_MeasIdToAddModList.c | 50 +
src/asn/rrc/ASN_RRC_MeasIdToAddModList.h | 44 +
src/asn/rrc/ASN_RRC_MeasIdToRemoveList.c | 49 +
src/asn/rrc/ASN_RRC_MeasIdToRemoveList.h | 42 +
src/asn/rrc/ASN_RRC_MeasObjectEUTRA.c | 281 +
src/asn/rrc/ASN_RRC_MeasObjectEUTRA.h | 73 +
src/asn/rrc/ASN_RRC_MeasObjectId.c | 61 +
src/asn/rrc/ASN_RRC_MeasObjectId.h | 44 +
src/asn/rrc/ASN_RRC_MeasObjectNR.c | 586 +
src/asn/rrc/ASN_RRC_MeasObjectNR.h | 107 +
src/asn/rrc/ASN_RRC_MeasObjectToAddMod.c | 116 +
src/asn/rrc/ASN_RRC_MeasObjectToAddMod.h | 67 +
src/asn/rrc/ASN_RRC_MeasObjectToAddModList.c | 50 +
src/asn/rrc/ASN_RRC_MeasObjectToAddModList.h | 44 +
src/asn/rrc/ASN_RRC_MeasObjectToRemoveList.c | 49 +
src/asn/rrc/ASN_RRC_MeasObjectToRemoveList.h | 42 +
src/asn/rrc/ASN_RRC_MeasQuantityResults.c | 72 +
src/asn/rrc/ASN_RRC_MeasQuantityResults.h | 44 +
.../rrc/ASN_RRC_MeasQuantityResultsEUTRA.c | 72 +
.../rrc/ASN_RRC_MeasQuantityResultsEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_MeasReportQuantity.c | 70 +
src/asn/rrc/ASN_RRC_MeasReportQuantity.h | 42 +
src/asn/rrc/ASN_RRC_MeasResult2EUTRA.c | 73 +
src/asn/rrc/ASN_RRC_MeasResult2EUTRA.h | 49 +
src/asn/rrc/ASN_RRC_MeasResult2NR.c | 84 +
src/asn/rrc/ASN_RRC_MeasResult2NR.h | 51 +
.../ASN_RRC_MeasResultCellListSFTD-EUTRA.c | 50 +
.../ASN_RRC_MeasResultCellListSFTD-EUTRA.h | 44 +
.../rrc/ASN_RRC_MeasResultCellListSFTD-NR.c | 50 +
.../rrc/ASN_RRC_MeasResultCellListSFTD-NR.h | 44 +
src/asn/rrc/ASN_RRC_MeasResultCellSFTD-NR.c | 142 +
src/asn/rrc/ASN_RRC_MeasResultCellSFTD-NR.h | 45 +
src/asn/rrc/ASN_RRC_MeasResultEUTRA.c | 73 +
src/asn/rrc/ASN_RRC_MeasResultEUTRA.h | 50 +
src/asn/rrc/ASN_RRC_MeasResultFreqList.c | 50 +
src/asn/rrc/ASN_RRC_MeasResultFreqList.h | 44 +
.../rrc/ASN_RRC_MeasResultFreqListFailMRDC.c | 50 +
.../rrc/ASN_RRC_MeasResultFreqListFailMRDC.h | 44 +
src/asn/rrc/ASN_RRC_MeasResultList2NR.c | 50 +
src/asn/rrc/ASN_RRC_MeasResultList2NR.h | 44 +
src/asn/rrc/ASN_RRC_MeasResultListEUTRA.c | 50 +
src/asn/rrc/ASN_RRC_MeasResultListEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_MeasResultListNR.c | 50 +
src/asn/rrc/ASN_RRC_MeasResultListNR.h | 44 +
src/asn/rrc/ASN_RRC_MeasResultNR.c | 286 +
src/asn/rrc/ASN_RRC_MeasResultNR.h | 75 +
src/asn/rrc/ASN_RRC_MeasResultSCG-Failure.c | 50 +
src/asn/rrc/ASN_RRC_MeasResultSCG-Failure.h | 42 +
src/asn/rrc/ASN_RRC_MeasResultSFTD-EUTRA.c | 142 +
src/asn/rrc/ASN_RRC_MeasResultSFTD-EUTRA.h | 45 +
.../ASN_RRC_MeasResultServFreqListEUTRA-SCG.c | 50 +
.../ASN_RRC_MeasResultServFreqListEUTRA-SCG.h | 44 +
.../ASN_RRC_MeasResultServFreqListNR-SCG.c | 50 +
.../ASN_RRC_MeasResultServFreqListNR-SCG.h | 44 +
src/asn/rrc/ASN_RRC_MeasResultServMO.c | 73 +
src/asn/rrc/ASN_RRC_MeasResultServMO.h | 50 +
src/asn/rrc/ASN_RRC_MeasResultServMOList.c | 50 +
src/asn/rrc/ASN_RRC_MeasResultServMOList.h | 44 +
src/asn/rrc/ASN_RRC_MeasResults.c | 217 +
src/asn/rrc/ASN_RRC_MeasResults.h | 86 +
src/asn/rrc/ASN_RRC_MeasTiming.c | 194 +
src/asn/rrc/ASN_RRC_MeasTiming.h | 66 +
src/asn/rrc/ASN_RRC_MeasTimingList.c | 50 +
src/asn/rrc/ASN_RRC_MeasTimingList.h | 44 +
src/asn/rrc/ASN_RRC_MeasTriggerQuantity.c | 72 +
src/asn/rrc/ASN_RRC_MeasTriggerQuantity.h | 56 +
.../rrc/ASN_RRC_MeasTriggerQuantityEUTRA.c | 72 +
.../rrc/ASN_RRC_MeasTriggerQuantityEUTRA.h | 56 +
.../rrc/ASN_RRC_MeasTriggerQuantityOffset.c | 162 +
.../rrc/ASN_RRC_MeasTriggerQuantityOffset.h | 54 +
src/asn/rrc/ASN_RRC_MeasurementReport-IEs.c | 100 +
src/asn/rrc/ASN_RRC_MeasurementReport-IEs.h | 47 +
src/asn/rrc/ASN_RRC_MeasurementReport.c | 133 +
src/asn/rrc/ASN_RRC_MeasurementReport.h | 63 +
...N_RRC_MeasurementTimingConfiguration-IEs.c | 64 +
...N_RRC_MeasurementTimingConfiguration-IEs.h | 44 +
...MeasurementTimingConfiguration-v1550-IEs.c | 100 +
...MeasurementTimingConfiguration-v1550-IEs.h | 46 +
.../ASN_RRC_MeasurementTimingConfiguration.c | 207 +
.../ASN_RRC_MeasurementTimingConfiguration.h | 80 +
.../rrc/ASN_RRC_MobilityFromNRCommand-IEs.c | 172 +
.../rrc/ASN_RRC_MobilityFromNRCommand-IEs.h | 61 +
src/asn/rrc/ASN_RRC_MobilityFromNRCommand.c | 143 +
src/asn/rrc/ASN_RRC_MobilityFromNRCommand.h | 65 +
src/asn/rrc/ASN_RRC_MobilityStateParameters.c | 256 +
src/asn/rrc/ASN_RRC_MobilityStateParameters.h | 68 +
src/asn/rrc/ASN_RRC_ModulationOrder.c | 61 +
src/asn/rrc/ASN_RRC_ModulationOrder.h | 55 +
src/asn/rrc/ASN_RRC_MultiBandInfoListEUTRA.c | 49 +
src/asn/rrc/ASN_RRC_MultiBandInfoListEUTRA.h | 42 +
.../ASN_RRC_MultiFrequencyBandListNR-SIB.c | 50 +
.../ASN_RRC_MultiFrequencyBandListNR-SIB.h | 44 +
.../rrc/ASN_RRC_MultiFrequencyBandListNR.c | 49 +
.../rrc/ASN_RRC_MultiFrequencyBandListNR.h | 42 +
src/asn/rrc/ASN_RRC_NAICS-Capability-Entry.c | 164 +
src/asn/rrc/ASN_RRC_NAICS-Capability-Entry.h | 67 +
src/asn/rrc/ASN_RRC_NG-5G-S-TMSI.c | 67 +
src/asn/rrc/ASN_RRC_NG-5G-S-TMSI.h | 44 +
src/asn/rrc/ASN_RRC_NR-FreqInfo.c | 52 +
src/asn/rrc/ASN_RRC_NR-FreqInfo.h | 44 +
src/asn/rrc/ASN_RRC_NR-MultiBandInfo.c | 63 +
src/asn/rrc/ASN_RRC_NR-MultiBandInfo.h | 44 +
src/asn/rrc/ASN_RRC_NR-NS-PmaxList.c | 50 +
src/asn/rrc/ASN_RRC_NR-NS-PmaxList.h | 44 +
src/asn/rrc/ASN_RRC_NR-NS-PmaxValue.c | 62 +
src/asn/rrc/ASN_RRC_NR-NS-PmaxValue.h | 42 +
src/asn/rrc/ASN_RRC_NR-RS-Type.c | 53 +
src/asn/rrc/ASN_RRC_NR-RS-Type.h | 51 +
src/asn/rrc/ASN_RRC_NRDC-Parameters.c | 154 +
src/asn/rrc/ASN_RRC_NRDC-Parameters.h | 57 +
src/asn/rrc/ASN_RRC_NZP-CSI-RS-Resource.c | 193 +
src/asn/rrc/ASN_RRC_NZP-CSI-RS-Resource.h | 67 +
src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceId.c | 61 +
src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceId.h | 44 +
src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceSet.c | 285 +
src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceSet.h | 69 +
.../rrc/ASN_RRC_NZP-CSI-RS-ResourceSetId.c | 61 +
.../rrc/ASN_RRC_NZP-CSI-RS-ResourceSetId.h | 44 +
src/asn/rrc/ASN_RRC_NextHopChainingCount.c | 61 +
src/asn/rrc/ASN_RRC_NextHopChainingCount.h | 44 +
src/asn/rrc/ASN_RRC_NumberOfCarriers.c | 61 +
src/asn/rrc/ASN_RRC_NumberOfCarriers.h | 44 +
src/asn/rrc/ASN_RRC_OtherConfig-v1540.c | 53 +
src/asn/rrc/ASN_RRC_OtherConfig-v1540.h | 46 +
src/asn/rrc/ASN_RRC_OtherConfig.c | 207 +
src/asn/rrc/ASN_RRC_OtherConfig.h | 74 +
src/asn/rrc/ASN_RRC_OverheatingAssistance.c | 417 +
src/asn/rrc/ASN_RRC_OverheatingAssistance.h | 77 +
.../rrc/ASN_RRC_OverheatingAssistanceConfig.c | 124 +
.../rrc/ASN_RRC_OverheatingAssistanceConfig.h | 61 +
src/asn/rrc/ASN_RRC_P-Max.c | 61 +
src/asn/rrc/ASN_RRC_P-Max.h | 44 +
src/asn/rrc/ASN_RRC_P0-PUCCH-Id.c | 61 +
src/asn/rrc/ASN_RRC_P0-PUCCH-Id.h | 44 +
src/asn/rrc/ASN_RRC_P0-PUCCH.c | 90 +
src/asn/rrc/ASN_RRC_P0-PUCCH.h | 42 +
src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSet.c | 102 +
src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSet.h | 44 +
src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSetId.c | 61 +
src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSetId.h | 44 +
src/asn/rrc/ASN_RRC_PCCH-Config.c | 1272 +
src/asn/rrc/ASN_RRC_PCCH-Config.h | 147 +
src/asn/rrc/ASN_RRC_PCCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_PCCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_PCCH-MessageType.c | 145 +
src/asn/rrc/ASN_RRC_PCCH-MessageType.h | 74 +
src/asn/rrc/ASN_RRC_PCI-List.c | 49 +
src/asn/rrc/ASN_RRC_PCI-List.h | 42 +
src/asn/rrc/ASN_RRC_PCI-Range.c | 136 +
src/asn/rrc/ASN_RRC_PCI-Range.h | 63 +
src/asn/rrc/ASN_RRC_PCI-RangeElement.c | 60 +
src/asn/rrc/ASN_RRC_PCI-RangeElement.h | 42 +
src/asn/rrc/ASN_RRC_PCI-RangeIndex.c | 61 +
src/asn/rrc/ASN_RRC_PCI-RangeIndex.h | 44 +
src/asn/rrc/ASN_RRC_PCI-RangeIndexList.c | 49 +
src/asn/rrc/ASN_RRC_PCI-RangeIndexList.h | 42 +
src/asn/rrc/ASN_RRC_PDCCH-BlindDetection.c | 61 +
src/asn/rrc/ASN_RRC_PDCCH-BlindDetection.h | 44 +
src/asn/rrc/ASN_RRC_PDCCH-Config.c | 417 +
src/asn/rrc/ASN_RRC_PDCCH-Config.h | 82 +
src/asn/rrc/ASN_RRC_PDCCH-ConfigCommon.c | 1190 +
src/asn/rrc/ASN_RRC_PDCCH-ConfigCommon.h | 140 +
src/asn/rrc/ASN_RRC_PDCCH-ConfigSIB1.c | 60 +
src/asn/rrc/ASN_RRC_PDCCH-ConfigSIB1.h | 42 +
src/asn/rrc/ASN_RRC_PDCCH-ServingCellConfig.c | 53 +
src/asn/rrc/ASN_RRC_PDCCH-ServingCellConfig.h | 46 +
src/asn/rrc/ASN_RRC_PDCP-Config.c | 1418 +
src/asn/rrc/ASN_RRC_PDCP-Config.h | 259 +
src/asn/rrc/ASN_RRC_PDCP-Parameters.c | 593 +
src/asn/rrc/ASN_RRC_PDCP-Parameters.h | 111 +
src/asn/rrc/ASN_RRC_PDCP-ParametersMRDC.c | 150 +
src/asn/rrc/ASN_RRC_PDCP-ParametersMRDC.h | 51 +
...ASN_RRC_PDSCH-CodeBlockGroupTransmission.c | 110 +
...ASN_RRC_PDSCH-CodeBlockGroupTransmission.h | 55 +
src/asn/rrc/ASN_RRC_PDSCH-Config.c | 1624 +
src/asn/rrc/ASN_RRC_PDSCH-Config.h | 211 +
src/asn/rrc/ASN_RRC_PDSCH-ConfigCommon.c | 53 +
src/asn/rrc/ASN_RRC_PDSCH-ConfigCommon.h | 46 +
src/asn/rrc/ASN_RRC_PDSCH-ServingCellConfig.c | 280 +
src/asn/rrc/ASN_RRC_PDSCH-ServingCellConfig.h | 77 +
...N_RRC_PDSCH-TimeDomainResourceAllocation.c | 178 +
...N_RRC_PDSCH-TimeDomainResourceAllocation.h | 50 +
...C_PDSCH-TimeDomainResourceAllocationList.c | 50 +
...C_PDSCH-TimeDomainResourceAllocationList.h | 44 +
src/asn/rrc/ASN_RRC_PDU-SessionID.c | 61 +
src/asn/rrc/ASN_RRC_PDU-SessionID.h | 44 +
src/asn/rrc/ASN_RRC_PH-InfoMCG.c | 73 +
src/asn/rrc/ASN_RRC_PH-InfoMCG.h | 50 +
src/asn/rrc/ASN_RRC_PH-InfoSCG.c | 73 +
src/asn/rrc/ASN_RRC_PH-InfoSCG.h | 50 +
src/asn/rrc/ASN_RRC_PH-TypeListMCG.c | 50 +
src/asn/rrc/ASN_RRC_PH-TypeListMCG.h | 44 +
src/asn/rrc/ASN_RRC_PH-TypeListSCG.c | 50 +
src/asn/rrc/ASN_RRC_PH-TypeListSCG.h | 44 +
src/asn/rrc/ASN_RRC_PH-UplinkCarrierMCG.c | 96 +
src/asn/rrc/ASN_RRC_PH-UplinkCarrierMCG.h | 51 +
src/asn/rrc/ASN_RRC_PH-UplinkCarrierSCG.c | 96 +
src/asn/rrc/ASN_RRC_PH-UplinkCarrierSCG.h | 51 +
src/asn/rrc/ASN_RRC_PHR-Config.c | 322 +
src/asn/rrc/ASN_RRC_PHR-Config.h | 87 +
src/asn/rrc/ASN_RRC_PLMN-Identity-EUTRA-5GC.c | 93 +
src/asn/rrc/ASN_RRC_PLMN-Identity-EUTRA-5GC.h | 55 +
src/asn/rrc/ASN_RRC_PLMN-Identity.c | 63 +
src/asn/rrc/ASN_RRC_PLMN-Identity.h | 44 +
src/asn/rrc/ASN_RRC_PLMN-IdentityInfo.c | 212 +
src/asn/rrc/ASN_RRC_PLMN-IdentityInfo.h | 68 +
src/asn/rrc/ASN_RRC_PLMN-IdentityInfoList.c | 50 +
src/asn/rrc/ASN_RRC_PLMN-IdentityInfoList.h | 44 +
.../rrc/ASN_RRC_PLMN-IdentityList-EUTRA-5GC.c | 50 +
.../rrc/ASN_RRC_PLMN-IdentityList-EUTRA-5GC.h | 44 +
.../rrc/ASN_RRC_PLMN-IdentityList-EUTRA-EPC.c | 50 +
.../rrc/ASN_RRC_PLMN-IdentityList-EUTRA-EPC.h | 44 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCell.c | 136 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCell.h | 51 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCellList.c | 50 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCellList.h | 44 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfig.c | 137 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfig.h | 51 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfigList.c | 50 +
src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfigList.h | 44 +
.../rrc/ASN_RRC_PRACH-ResourceDedicatedBFR.c | 64 +
.../rrc/ASN_RRC_PRACH-ResourceDedicatedBFR.h | 55 +
src/asn/rrc/ASN_RRC_PRB-Id.c | 61 +
src/asn/rrc/ASN_RRC_PRB-Id.h | 44 +
.../ASN_RRC_PTRS-DensityRecommendationDL.c | 240 +
.../ASN_RRC_PTRS-DensityRecommendationDL.h | 44 +
.../ASN_RRC_PTRS-DensityRecommendationUL.c | 440 +
.../ASN_RRC_PTRS-DensityRecommendationUL.h | 49 +
src/asn/rrc/ASN_RRC_PTRS-DownlinkConfig.c | 366 +
src/asn/rrc/ASN_RRC_PTRS-DownlinkConfig.h | 68 +
src/asn/rrc/ASN_RRC_PTRS-UplinkConfig.c | 699 +
src/asn/rrc/ASN_RRC_PTRS-UplinkConfig.h | 102 +
src/asn/rrc/ASN_RRC_PUCCH-CSI-Resource.c | 60 +
src/asn/rrc/ASN_RRC_PUCCH-CSI-Resource.h | 42 +
src/asn/rrc/ASN_RRC_PUCCH-Config.c | 958 +
src/asn/rrc/ASN_RRC_PUCCH-Config.h | 122 +
src/asn/rrc/ASN_RRC_PUCCH-ConfigCommon.c | 220 +
src/asn/rrc/ASN_RRC_PUCCH-ConfigCommon.h | 56 +
src/asn/rrc/ASN_RRC_PUCCH-FormatConfig.c | 326 +
src/asn/rrc/ASN_RRC_PUCCH-FormatConfig.h | 70 +
src/asn/rrc/ASN_RRC_PUCCH-MaxCodeRate.c | 63 +
src/asn/rrc/ASN_RRC_PUCCH-MaxCodeRate.h | 56 +
.../ASN_RRC_PUCCH-PathlossReferenceRS-Id.c | 61 +
.../ASN_RRC_PUCCH-PathlossReferenceRS-Id.h | 44 +
.../rrc/ASN_RRC_PUCCH-PathlossReferenceRS.c | 114 +
.../rrc/ASN_RRC_PUCCH-PathlossReferenceRS.h | 60 +
src/asn/rrc/ASN_RRC_PUCCH-PowerControl.c | 464 +
src/asn/rrc/ASN_RRC_PUCCH-PowerControl.h | 74 +
src/asn/rrc/ASN_RRC_PUCCH-Resource.c | 225 +
src/asn/rrc/ASN_RRC_PUCCH-Resource.h | 80 +
src/asn/rrc/ASN_RRC_PUCCH-ResourceId.c | 61 +
src/asn/rrc/ASN_RRC_PUCCH-ResourceId.h | 44 +
src/asn/rrc/ASN_RRC_PUCCH-ResourceSet.c | 175 +
src/asn/rrc/ASN_RRC_PUCCH-ResourceSet.h | 51 +
src/asn/rrc/ASN_RRC_PUCCH-ResourceSetId.c | 61 +
src/asn/rrc/ASN_RRC_PUCCH-ResourceSetId.h | 44 +
.../rrc/ASN_RRC_PUCCH-SpatialRelationInfo.c | 265 +
.../rrc/ASN_RRC_PUCCH-SpatialRelationInfo.h | 83 +
.../rrc/ASN_RRC_PUCCH-SpatialRelationInfoId.c | 61 +
.../rrc/ASN_RRC_PUCCH-SpatialRelationInfoId.h | 44 +
src/asn/rrc/ASN_RRC_PUCCH-TPC-CommandConfig.c | 122 +
src/asn/rrc/ASN_RRC_PUCCH-TPC-CommandConfig.h | 45 +
src/asn/rrc/ASN_RRC_PUCCH-format0.c | 160 +
src/asn/rrc/ASN_RRC_PUCCH-format0.h | 42 +
src/asn/rrc/ASN_RRC_PUCCH-format1.c | 200 +
src/asn/rrc/ASN_RRC_PUCCH-format1.h | 43 +
src/asn/rrc/ASN_RRC_PUCCH-format2.c | 160 +
src/asn/rrc/ASN_RRC_PUCCH-format2.h | 42 +
src/asn/rrc/ASN_RRC_PUCCH-format3.c | 160 +
src/asn/rrc/ASN_RRC_PUCCH-format3.h | 42 +
src/asn/rrc/ASN_RRC_PUCCH-format4.c | 236 +
src/asn/rrc/ASN_RRC_PUCCH-format4.h | 58 +
...ASN_RRC_PUSCH-CodeBlockGroupTransmission.c | 100 +
...ASN_RRC_PUSCH-CodeBlockGroupTransmission.h | 53 +
src/asn/rrc/ASN_RRC_PUSCH-Config.c | 849 +
src/asn/rrc/ASN_RRC_PUSCH-Config.h | 128 +
src/asn/rrc/ASN_RRC_PUSCH-ConfigCommon.c | 187 +
src/asn/rrc/ASN_RRC_PUSCH-ConfigCommon.h | 57 +
.../ASN_RRC_PUSCH-PathlossReferenceRS-Id.c | 61 +
.../ASN_RRC_PUSCH-PathlossReferenceRS-Id.h | 44 +
.../rrc/ASN_RRC_PUSCH-PathlossReferenceRS.c | 114 +
.../rrc/ASN_RRC_PUSCH-PathlossReferenceRS.h | 60 +
src/asn/rrc/ASN_RRC_PUSCH-PowerControl.c | 672 +
src/asn/rrc/ASN_RRC_PUSCH-PowerControl.h | 99 +
src/asn/rrc/ASN_RRC_PUSCH-ServingCellConfig.c | 260 +
src/asn/rrc/ASN_RRC_PUSCH-ServingCellConfig.h | 70 +
src/asn/rrc/ASN_RRC_PUSCH-TPC-CommandConfig.c | 132 +
src/asn/rrc/ASN_RRC_PUSCH-TPC-CommandConfig.h | 47 +
...N_RRC_PUSCH-TimeDomainResourceAllocation.c | 178 +
...N_RRC_PUSCH-TimeDomainResourceAllocation.h | 50 +
...C_PUSCH-TimeDomainResourceAllocationList.c | 50 +
...C_PUSCH-TimeDomainResourceAllocationList.h | 44 +
src/asn/rrc/ASN_RRC_Paging.c | 101 +
src/asn/rrc/ASN_RRC_Paging.h | 49 +
src/asn/rrc/ASN_RRC_PagingCycle.c | 57 +
src/asn/rrc/ASN_RRC_PagingCycle.h | 53 +
src/asn/rrc/ASN_RRC_PagingRecord.c | 106 +
src/asn/rrc/ASN_RRC_PagingRecord.h | 52 +
src/asn/rrc/ASN_RRC_PagingRecordList.c | 50 +
src/asn/rrc/ASN_RRC_PagingRecordList.h | 44 +
src/asn/rrc/ASN_RRC_PagingUE-Identity.c | 62 +
src/asn/rrc/ASN_RRC_PagingUE-Identity.h | 59 +
src/asn/rrc/ASN_RRC_PeriodicRNAU-TimerValue.c | 65 +
src/asn/rrc/ASN_RRC_PeriodicRNAU-TimerValue.h | 57 +
src/asn/rrc/ASN_RRC_PeriodicalReportConfig.c | 251 +
src/asn/rrc/ASN_RRC_PeriodicalReportConfig.h | 73 +
.../ASN_RRC_PeriodicalReportConfigInterRAT.c | 168 +
.../ASN_RRC_PeriodicalReportConfigInterRAT.h | 63 +
src/asn/rrc/ASN_RRC_Phy-Parameters.c | 97 +
src/asn/rrc/ASN_RRC_Phy-Parameters.h | 50 +
src/asn/rrc/ASN_RRC_Phy-ParametersCommon.c | 2186 +
src/asn/rrc/ASN_RRC_Phy-ParametersCommon.h | 246 +
src/asn/rrc/ASN_RRC_Phy-ParametersFR1.c | 389 +
src/asn/rrc/ASN_RRC_Phy-ParametersFR1.h | 91 +
src/asn/rrc/ASN_RRC_Phy-ParametersFR2.c | 335 +
src/asn/rrc/ASN_RRC_Phy-ParametersFR2.h | 86 +
src/asn/rrc/ASN_RRC_Phy-ParametersFRX-Diff.c | 3037 +
src/asn/rrc/ASN_RRC_Phy-ParametersFRX-Diff.h | 310 +
src/asn/rrc/ASN_RRC_Phy-ParametersMRDC.c | 126 +
src/asn/rrc/ASN_RRC_Phy-ParametersMRDC.h | 53 +
src/asn/rrc/ASN_RRC_Phy-ParametersXDD-Diff.c | 465 +
src/asn/rrc/ASN_RRC_Phy-ParametersXDD-Diff.h | 85 +
src/asn/rrc/ASN_RRC_PhysCellId.c | 61 +
src/asn/rrc/ASN_RRC_PhysCellId.h | 44 +
src/asn/rrc/ASN_RRC_PhysicalCellGroupConfig.c | 492 +
src/asn/rrc/ASN_RRC_PhysicalCellGroupConfig.h | 99 +
src/asn/rrc/ASN_RRC_PollByte.c | 177 +
src/asn/rrc/ASN_RRC_PollByte.h | 113 +
src/asn/rrc/ASN_RRC_PollPDU.c | 113 +
src/asn/rrc/ASN_RRC_PollPDU.h | 81 +
src/asn/rrc/ASN_RRC_PortIndex2.c | 61 +
src/asn/rrc/ASN_RRC_PortIndex2.h | 44 +
src/asn/rrc/ASN_RRC_PortIndex4.c | 61 +
src/asn/rrc/ASN_RRC_PortIndex4.h | 44 +
src/asn/rrc/ASN_RRC_PortIndex8.c | 61 +
src/asn/rrc/ASN_RRC_PortIndex8.h | 44 +
src/asn/rrc/ASN_RRC_PortIndexFor8Ranks.c | 1130 +
src/asn/rrc/ASN_RRC_PortIndexFor8Ranks.h | 143 +
src/asn/rrc/ASN_RRC_ProcessingParameters.c | 183 +
src/asn/rrc/ASN_RRC_ProcessingParameters.h | 57 +
src/asn/rrc/ASN_RRC_Q-OffsetRange.c | 111 +
src/asn/rrc/ASN_RRC_Q-OffsetRange.h | 80 +
src/asn/rrc/ASN_RRC_Q-OffsetRangeList.c | 240 +
src/asn/rrc/ASN_RRC_Q-OffsetRangeList.h | 45 +
src/asn/rrc/ASN_RRC_Q-QualMin.c | 61 +
src/asn/rrc/ASN_RRC_Q-QualMin.h | 44 +
src/asn/rrc/ASN_RRC_Q-RxLevMin.c | 61 +
src/asn/rrc/ASN_RRC_Q-RxLevMin.h | 44 +
src/asn/rrc/ASN_RRC_QCL-Info.c | 186 +
src/asn/rrc/ASN_RRC_QCL-Info.h | 75 +
src/asn/rrc/ASN_RRC_QFI.c | 61 +
src/asn/rrc/ASN_RRC_QFI.h | 44 +
src/asn/rrc/ASN_RRC_QuantityConfig.c | 182 +
src/asn/rrc/ASN_RRC_QuantityConfig.h | 60 +
src/asn/rrc/ASN_RRC_QuantityConfigNR.c | 63 +
src/asn/rrc/ASN_RRC_QuantityConfigNR.h | 44 +
src/asn/rrc/ASN_RRC_QuantityConfigRS.c | 60 +
src/asn/rrc/ASN_RRC_QuantityConfigRS.h | 41 +
src/asn/rrc/ASN_RRC_RA-Prioritization.c | 162 +
src/asn/rrc/ASN_RRC_RA-Prioritization.h | 61 +
src/asn/rrc/ASN_RRC_RACH-ConfigCommon.c | 1229 +
src/asn/rrc/ASN_RRC_RACH-ConfigCommon.h | 246 +
src/asn/rrc/ASN_RRC_RACH-ConfigDedicated.c | 64 +
src/asn/rrc/ASN_RRC_RACH-ConfigDedicated.h | 48 +
src/asn/rrc/ASN_RRC_RACH-ConfigGeneric.c | 462 +
src/asn/rrc/ASN_RRC_RACH-ConfigGeneric.h | 93 +
src/asn/rrc/ASN_RRC_RAN-AreaCode.c | 61 +
src/asn/rrc/ASN_RRC_RAN-AreaCode.h | 44 +
src/asn/rrc/ASN_RRC_RAN-AreaConfig.c | 135 +
src/asn/rrc/ASN_RRC_RAN-AreaConfig.h | 49 +
.../rrc/ASN_RRC_RAN-NotificationAreaInfo.c | 64 +
.../rrc/ASN_RRC_RAN-NotificationAreaInfo.h | 61 +
src/asn/rrc/ASN_RRC_RAT-Type.c | 59 +
src/asn/rrc/ASN_RRC_RAT-Type.h | 56 +
src/asn/rrc/ASN_RRC_RF-Parameters.c | 370 +
src/asn/rrc/ASN_RRC_RF-Parameters.h | 86 +
src/asn/rrc/ASN_RRC_RF-ParametersMRDC.c | 296 +
src/asn/rrc/ASN_RRC_RF-ParametersMRDC.h | 78 +
src/asn/rrc/ASN_RRC_RLC-BearerConfig.c | 192 +
src/asn/rrc/ASN_RRC_RLC-BearerConfig.h | 76 +
src/asn/rrc/ASN_RRC_RLC-Config.c | 274 +
src/asn/rrc/ASN_RRC_RLC-Config.h | 88 +
src/asn/rrc/ASN_RRC_RLC-Parameters.c | 204 +
src/asn/rrc/ASN_RRC_RLC-Parameters.h | 60 +
src/asn/rrc/ASN_RRC_RLF-TimersAndConstants.c | 357 +
src/asn/rrc/ASN_RRC_RLF-TimersAndConstants.h | 98 +
src/asn/rrc/ASN_RRC_RNTI-Value.c | 61 +
src/asn/rrc/ASN_RRC_RNTI-Value.h | 44 +
.../rrc/ASN_RRC_RRC-TransactionIdentifier.c | 61 +
.../rrc/ASN_RRC_RRC-TransactionIdentifier.h | 44 +
src/asn/rrc/ASN_RRC_RRCReconfiguration-IEs.c | 121 +
src/asn/rrc/ASN_RRC_RRCReconfiguration-IEs.h | 49 +
.../ASN_RRC_RRCReconfiguration-v1530-IEs.c | 320 +
.../ASN_RRC_RRCReconfiguration-v1530-IEs.h | 67 +
.../ASN_RRC_RRCReconfiguration-v1540-IEs.c | 64 +
.../ASN_RRC_RRCReconfiguration-v1540-IEs.h | 44 +
.../ASN_RRC_RRCReconfiguration-v1560-IEs.c | 137 +
.../ASN_RRC_RRCReconfiguration-v1560-IEs.h | 51 +
src/asn/rrc/ASN_RRC_RRCReconfiguration.c | 143 +
src/asn/rrc/ASN_RRC_RRCReconfiguration.h | 65 +
.../ASN_RRC_RRCReconfigurationComplete-IEs.c | 63 +
.../ASN_RRC_RRCReconfigurationComplete-IEs.h | 44 +
...RRC_RRCReconfigurationComplete-v1530-IEs.c | 64 +
...RRC_RRCReconfigurationComplete-v1530-IEs.h | 44 +
...RRC_RRCReconfigurationComplete-v1560-IEs.c | 144 +
...RRC_RRCReconfigurationComplete-v1560-IEs.h | 62 +
.../rrc/ASN_RRC_RRCReconfigurationComplete.c | 143 +
.../rrc/ASN_RRC_RRCReconfigurationComplete.h | 65 +
src/asn/rrc/ASN_RRC_RRCReestablishment-IEs.c | 100 +
src/asn/rrc/ASN_RRC_RRCReestablishment-IEs.h | 47 +
src/asn/rrc/ASN_RRC_RRCReestablishment.c | 143 +
src/asn/rrc/ASN_RRC_RRCReestablishment.h | 65 +
.../ASN_RRC_RRCReestablishmentComplete-IEs.c | 90 +
.../ASN_RRC_RRCReestablishmentComplete-IEs.h | 45 +
.../rrc/ASN_RRC_RRCReestablishmentComplete.c | 143 +
.../rrc/ASN_RRC_RRCReestablishmentComplete.h | 65 +
.../ASN_RRC_RRCReestablishmentRequest-IEs.c | 106 +
.../ASN_RRC_RRCReestablishmentRequest-IEs.h | 44 +
.../rrc/ASN_RRC_RRCReestablishmentRequest.c | 50 +
.../rrc/ASN_RRC_RRCReestablishmentRequest.h | 40 +
src/asn/rrc/ASN_RRC_RRCReject-IEs.c | 100 +
src/asn/rrc/ASN_RRC_RRCReject-IEs.h | 47 +
src/asn/rrc/ASN_RRC_RRCReject.c | 133 +
src/asn/rrc/ASN_RRC_RRCReject.h | 63 +
src/asn/rrc/ASN_RRC_RRCRelease-IEs.c | 255 +
src/asn/rrc/ASN_RRC_RRCRelease-IEs.h | 72 +
src/asn/rrc/ASN_RRC_RRCRelease-v1540-IEs.c | 90 +
src/asn/rrc/ASN_RRC_RRCRelease-v1540-IEs.h | 45 +
src/asn/rrc/ASN_RRC_RRCRelease.c | 143 +
src/asn/rrc/ASN_RRC_RRCRelease.h | 65 +
src/asn/rrc/ASN_RRC_RRCResume-IEs.c | 175 +
src/asn/rrc/ASN_RRC_RRCResume-IEs.h | 57 +
src/asn/rrc/ASN_RRC_RRCResume-v1560-IEs.c | 126 +
src/asn/rrc/ASN_RRC_RRCResume-v1560-IEs.h | 47 +
src/asn/rrc/ASN_RRC_RRCResume.c | 143 +
src/asn/rrc/ASN_RRC_RRCResume.h | 65 +
src/asn/rrc/ASN_RRC_RRCResumeComplete-IEs.c | 151 +
src/asn/rrc/ASN_RRC_RRCResumeComplete-IEs.h | 53 +
src/asn/rrc/ASN_RRC_RRCResumeComplete.c | 143 +
src/asn/rrc/ASN_RRC_RRCResumeComplete.h | 65 +
src/asn/rrc/ASN_RRC_RRCResumeRequest-IEs.c | 152 +
src/asn/rrc/ASN_RRC_RRCResumeRequest-IEs.h | 45 +
src/asn/rrc/ASN_RRC_RRCResumeRequest.c | 50 +
src/asn/rrc/ASN_RRC_RRCResumeRequest.h | 40 +
src/asn/rrc/ASN_RRC_RRCResumeRequest1-IEs.c | 152 +
src/asn/rrc/ASN_RRC_RRCResumeRequest1-IEs.h | 45 +
src/asn/rrc/ASN_RRC_RRCResumeRequest1.c | 50 +
src/asn/rrc/ASN_RRC_RRCResumeRequest1.h | 40 +
src/asn/rrc/ASN_RRC_RRCSetup-IEs.c | 136 +
src/asn/rrc/ASN_RRC_RRCSetup-IEs.h | 48 +
src/asn/rrc/ASN_RRC_RRCSetup.c | 143 +
src/asn/rrc/ASN_RRC_RRCSetup.h | 65 +
src/asn/rrc/ASN_RRC_RRCSetupComplete-IEs.c | 391 +
src/asn/rrc/ASN_RRC_RRCSetupComplete-IEs.h | 89 +
src/asn/rrc/ASN_RRC_RRCSetupComplete.c | 143 +
src/asn/rrc/ASN_RRC_RRCSetupComplete.h | 65 +
src/asn/rrc/ASN_RRC_RRCSetupRequest-IEs.c | 106 +
src/asn/rrc/ASN_RRC_RRCSetupRequest-IEs.h | 44 +
src/asn/rrc/ASN_RRC_RRCSetupRequest.c | 50 +
src/asn/rrc/ASN_RRC_RRCSetupRequest.h | 40 +
.../ASN_RRC_RRCSystemInfoRequest-r15-IEs.c | 132 +
.../ASN_RRC_RRCSystemInfoRequest-r15-IEs.h | 41 +
src/asn/rrc/ASN_RRC_RRCSystemInfoRequest.c | 133 +
src/asn/rrc/ASN_RRC_RRCSystemInfoRequest.h | 63 +
src/asn/rrc/ASN_RRC_RRM-Config.c | 289 +
src/asn/rrc/ASN_RRC_RRM-Config.h | 124 +
src/asn/rrc/ASN_RRC_RSRP-Range.c | 61 +
src/asn/rrc/ASN_RRC_RSRP-Range.h | 44 +
src/asn/rrc/ASN_RRC_RSRP-RangeEUTRA.c | 61 +
src/asn/rrc/ASN_RRC_RSRP-RangeEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_RSRQ-Range.c | 61 +
src/asn/rrc/ASN_RRC_RSRQ-Range.h | 44 +
src/asn/rrc/ASN_RRC_RSRQ-RangeEUTRA.c | 61 +
src/asn/rrc/ASN_RRC_RSRQ-RangeEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_RadioBearerConfig.c | 140 +
src/asn/rrc/ASN_RRC_RadioBearerConfig.h | 60 +
.../rrc/ASN_RRC_RadioLinkMonitoringConfig.c | 345 +
.../rrc/ASN_RRC_RadioLinkMonitoringConfig.h | 87 +
.../rrc/ASN_RRC_RadioLinkMonitoringRS-Id.c | 61 +
.../rrc/ASN_RRC_RadioLinkMonitoringRS-Id.h | 44 +
src/asn/rrc/ASN_RRC_RadioLinkMonitoringRS.c | 172 +
src/asn/rrc/ASN_RRC_RadioLinkMonitoringRS.h | 72 +
src/asn/rrc/ASN_RRC_RangeToBestCell.c | 36 +
src/asn/rrc/ASN_RRC_RangeToBestCell.h | 44 +
src/asn/rrc/ASN_RRC_RateMatchPattern.c | 765 +
src/asn/rrc/ASN_RRC_RateMatchPattern.h | 122 +
src/asn/rrc/ASN_RRC_RateMatchPatternGroup.c | 103 +
src/asn/rrc/ASN_RRC_RateMatchPatternGroup.h | 62 +
src/asn/rrc/ASN_RRC_RateMatchPatternId.c | 61 +
src/asn/rrc/ASN_RRC_RateMatchPatternId.h | 44 +
src/asn/rrc/ASN_RRC_RateMatchPatternLTE-CRS.c | 283 +
src/asn/rrc/ASN_RRC_RateMatchPatternLTE-CRS.h | 76 +
src/asn/rrc/ASN_RRC_ReconfigurationWithSync.c | 252 +
src/asn/rrc/ASN_RRC_ReconfigurationWithSync.h | 87 +
.../rrc/ASN_RRC_RedirectedCarrierInfo-EUTRA.c | 108 +
.../rrc/ASN_RRC_RedirectedCarrierInfo-EUTRA.h | 49 +
src/asn/rrc/ASN_RRC_RedirectedCarrierInfo.c | 64 +
src/asn/rrc/ASN_RRC_RedirectedCarrierInfo.h | 61 +
.../rrc/ASN_RRC_ReducedAggregatedBandwidth.c | 73 +
.../rrc/ASN_RRC_ReducedAggregatedBandwidth.h | 61 +
src/asn/rrc/ASN_RRC_ReestabNCellInfo.c | 106 +
src/asn/rrc/ASN_RRC_ReestabNCellInfo.h | 44 +
src/asn/rrc/ASN_RRC_ReestabNCellInfoList.c | 50 +
src/asn/rrc/ASN_RRC_ReestabNCellInfoList.h | 44 +
src/asn/rrc/ASN_RRC_ReestabUE-Identity.c | 70 +
src/asn/rrc/ASN_RRC_ReestabUE-Identity.h | 44 +
src/asn/rrc/ASN_RRC_ReestablishmentCause.c | 57 +
src/asn/rrc/ASN_RRC_ReestablishmentCause.h | 53 +
src/asn/rrc/ASN_RRC_ReestablishmentInfo.c | 73 +
src/asn/rrc/ASN_RRC_ReestablishmentInfo.h | 46 +
src/asn/rrc/ASN_RRC_ReferenceSignalConfig.c | 64 +
src/asn/rrc/ASN_RRC_ReferenceSignalConfig.h | 44 +
src/asn/rrc/ASN_RRC_RegisteredAMF.c | 63 +
src/asn/rrc/ASN_RRC_RegisteredAMF.h | 44 +
src/asn/rrc/ASN_RRC_RejectWaitTime.c | 61 +
src/asn/rrc/ASN_RRC_RejectWaitTime.h | 44 +
src/asn/rrc/ASN_RRC_ReportCGI-EUTRA.c | 50 +
src/asn/rrc/ASN_RRC_ReportCGI-EUTRA.h | 44 +
src/asn/rrc/ASN_RRC_ReportCGI.c | 50 +
src/asn/rrc/ASN_RRC_ReportCGI.h | 44 +
src/asn/rrc/ASN_RRC_ReportConfigId.c | 61 +
src/asn/rrc/ASN_RRC_ReportConfigId.h | 44 +
src/asn/rrc/ASN_RRC_ReportConfigInterRAT.c | 128 +
src/asn/rrc/ASN_RRC_ReportConfigInterRAT.h | 71 +
src/asn/rrc/ASN_RRC_ReportConfigNR.c | 170 +
src/asn/rrc/ASN_RRC_ReportConfigNR.h | 76 +
src/asn/rrc/ASN_RRC_ReportConfigToAddMod.c | 116 +
src/asn/rrc/ASN_RRC_ReportConfigToAddMod.h | 67 +
.../rrc/ASN_RRC_ReportConfigToAddModList.c | 50 +
.../rrc/ASN_RRC_ReportConfigToAddModList.h | 44 +
.../rrc/ASN_RRC_ReportConfigToRemoveList.c | 49 +
.../rrc/ASN_RRC_ReportConfigToRemoveList.h | 42 +
src/asn/rrc/ASN_RRC_ReportInterval.c | 77 +
src/asn/rrc/ASN_RRC_ReportInterval.h | 63 +
src/asn/rrc/ASN_RRC_ReportSFTD-EUTRA.c | 60 +
src/asn/rrc/ASN_RRC_ReportSFTD-EUTRA.h | 45 +
src/asn/rrc/ASN_RRC_ReportSFTD-NR.c | 60 +
src/asn/rrc/ASN_RRC_ReportSFTD-NR.h | 45 +
src/asn/rrc/ASN_RRC_ReselectionThreshold.c | 61 +
src/asn/rrc/ASN_RRC_ReselectionThreshold.h | 44 +
src/asn/rrc/ASN_RRC_ReselectionThresholdQ.c | 61 +
src/asn/rrc/ASN_RRC_ReselectionThresholdQ.h | 44 +
src/asn/rrc/ASN_RRC_ResultsPerCSI-RS-Index.c | 63 +
src/asn/rrc/ASN_RRC_ResultsPerCSI-RS-Index.h | 44 +
.../rrc/ASN_RRC_ResultsPerCSI-RS-IndexList.c | 50 +
.../rrc/ASN_RRC_ResultsPerCSI-RS-IndexList.h | 44 +
src/asn/rrc/ASN_RRC_ResultsPerSSB-Index.c | 63 +
src/asn/rrc/ASN_RRC_ResultsPerSSB-Index.h | 44 +
src/asn/rrc/ASN_RRC_ResultsPerSSB-IndexList.c | 50 +
src/asn/rrc/ASN_RRC_ResultsPerSSB-IndexList.h | 44 +
src/asn/rrc/ASN_RRC_ResumeCause.c | 81 +
src/asn/rrc/ASN_RRC_ResumeCause.h | 65 +
src/asn/rrc/ASN_RRC_S-NSSAI.c | 134 +
src/asn/rrc/ASN_RRC_S-NSSAI.h | 52 +
.../rrc/ASN_RRC_SCGFailureInformation-IEs.c | 91 +
.../rrc/ASN_RRC_SCGFailureInformation-IEs.h | 47 +
src/asn/rrc/ASN_RRC_SCGFailureInformation.c | 133 +
src/asn/rrc/ASN_RRC_SCGFailureInformation.h | 63 +
.../ASN_RRC_SCGFailureInformationEUTRA-IEs.c | 91 +
.../ASN_RRC_SCGFailureInformationEUTRA-IEs.h | 47 +
.../rrc/ASN_RRC_SCGFailureInformationEUTRA.c | 133 +
.../rrc/ASN_RRC_SCGFailureInformationEUTRA.h | 63 +
src/asn/rrc/ASN_RRC_SCS-SpecificCarrier.c | 217 +
src/asn/rrc/ASN_RRC_SCS-SpecificCarrier.h | 53 +
src/asn/rrc/ASN_RRC_SCellConfig.c | 130 +
src/asn/rrc/ASN_RRC_SCellConfig.h | 57 +
src/asn/rrc/ASN_RRC_SCellIndex.c | 61 +
src/asn/rrc/ASN_RRC_SCellIndex.h | 44 +
src/asn/rrc/ASN_RRC_SDAP-Config.c | 340 +
src/asn/rrc/ASN_RRC_SDAP-Config.h | 76 +
src/asn/rrc/ASN_RRC_SDAP-Parameters.c | 96 +
src/asn/rrc/ASN_RRC_SDAP-Parameters.h | 50 +
src/asn/rrc/ASN_RRC_SI-RequestConfig.c | 315 +
src/asn/rrc/ASN_RRC_SI-RequestConfig.h | 83 +
src/asn/rrc/ASN_RRC_SI-RequestResources.c | 162 +
src/asn/rrc/ASN_RRC_SI-RequestResources.h | 42 +
src/asn/rrc/ASN_RRC_SI-SchedulingInfo.c | 263 +
src/asn/rrc/ASN_RRC_SI-SchedulingInfo.h | 74 +
src/asn/rrc/ASN_RRC_SIB-Mapping.c | 50 +
src/asn/rrc/ASN_RRC_SIB-Mapping.h | 44 +
src/asn/rrc/ASN_RRC_SIB-TypeInfo.c | 222 +
src/asn/rrc/ASN_RRC_SIB-TypeInfo.h | 71 +
src/asn/rrc/ASN_RRC_SIB1.c | 675 +
src/asn/rrc/ASN_RRC_SIB1.h | 123 +
src/asn/rrc/ASN_RRC_SIB2.c | 786 +
src/asn/rrc/ASN_RRC_SIB2.h | 167 +
src/asn/rrc/ASN_RRC_SIB3.c | 74 +
src/asn/rrc/ASN_RRC_SIB3.h | 50 +
src/asn/rrc/ASN_RRC_SIB4.c | 62 +
src/asn/rrc/ASN_RRC_SIB4.h | 46 +
src/asn/rrc/ASN_RRC_SIB5.c | 84 +
src/asn/rrc/ASN_RRC_SIB5.h | 52 +
src/asn/rrc/ASN_RRC_SIB6.c | 185 +
src/asn/rrc/ASN_RRC_SIB6.h | 48 +
src/asn/rrc/ASN_RRC_SIB7.c | 291 +
src/asn/rrc/ASN_RRC_SIB7.h | 60 +
src/asn/rrc/ASN_RRC_SIB8.c | 301 +
src/asn/rrc/ASN_RRC_SIB8.h | 61 +
src/asn/rrc/ASN_RRC_SIB9.c | 269 +
src/asn/rrc/ASN_RRC_SIB9.h | 56 +
src/asn/rrc/ASN_RRC_SINR-Range.c | 61 +
src/asn/rrc/ASN_RRC_SINR-Range.h | 44 +
src/asn/rrc/ASN_RRC_SINR-RangeEUTRA.c | 61 +
src/asn/rrc/ASN_RRC_SINR-RangeEUTRA.h | 44 +
src/asn/rrc/ASN_RRC_SK-Counter.c | 61 +
src/asn/rrc/ASN_RRC_SK-Counter.h | 44 +
src/asn/rrc/ASN_RRC_SN-FieldLengthAM.c | 53 +
src/asn/rrc/ASN_RRC_SN-FieldLengthAM.h | 51 +
src/asn/rrc/ASN_RRC_SN-FieldLengthUM.c | 53 +
src/asn/rrc/ASN_RRC_SN-FieldLengthUM.h | 51 +
src/asn/rrc/ASN_RRC_SPS-Config.c | 230 +
src/asn/rrc/ASN_RRC_SPS-Config.h | 74 +
src/asn/rrc/ASN_RRC_SRB-Identity.c | 61 +
src/asn/rrc/ASN_RRC_SRB-Identity.h | 44 +
src/asn/rrc/ASN_RRC_SRB-ToAddMod.c | 171 +
src/asn/rrc/ASN_RRC_SRB-ToAddMod.h | 61 +
src/asn/rrc/ASN_RRC_SRB-ToAddModList.c | 50 +
src/asn/rrc/ASN_RRC_SRB-ToAddModList.h | 44 +
src/asn/rrc/ASN_RRC_SRI-PUSCH-PowerControl.c | 126 +
src/asn/rrc/ASN_RRC_SRI-PUSCH-PowerControl.h | 53 +
.../rrc/ASN_RRC_SRI-PUSCH-PowerControlId.c | 61 +
.../rrc/ASN_RRC_SRI-PUSCH-PowerControlId.h | 44 +
src/asn/rrc/ASN_RRC_SRS-CC-SetIndex.c | 122 +
src/asn/rrc/ASN_RRC_SRS-CC-SetIndex.h | 41 +
src/asn/rrc/ASN_RRC_SRS-CarrierSwitching.c | 359 +
src/asn/rrc/ASN_RRC_SRS-CarrierSwitching.h | 86 +
src/asn/rrc/ASN_RRC_SRS-Config.c | 430 +
src/asn/rrc/ASN_RRC_SRS-Config.h | 82 +
.../rrc/ASN_RRC_SRS-PeriodicityAndOffset.c | 692 +
.../rrc/ASN_RRC_SRS-PeriodicityAndOffset.h | 83 +
src/asn/rrc/ASN_RRC_SRS-Resource.c | 1195 +
src/asn/rrc/ASN_RRC_SRS-Resource.h | 175 +
src/asn/rrc/ASN_RRC_SRS-ResourceId.c | 61 +
src/asn/rrc/ASN_RRC_SRS-ResourceId.h | 44 +
src/asn/rrc/ASN_RRC_SRS-ResourceSet.c | 812 +
src/asn/rrc/ASN_RRC_SRS-ResourceSet.h | 149 +
src/asn/rrc/ASN_RRC_SRS-ResourceSetId.c | 61 +
src/asn/rrc/ASN_RRC_SRS-ResourceSetId.h | 44 +
src/asn/rrc/ASN_RRC_SRS-Resources.c | 404 +
src/asn/rrc/ASN_RRC_SRS-Resources.h | 79 +
src/asn/rrc/ASN_RRC_SRS-SpatialRelationInfo.c | 179 +
src/asn/rrc/ASN_RRC_SRS-SpatialRelationInfo.h | 70 +
src/asn/rrc/ASN_RRC_SRS-SwitchingTimeEUTRA.c | 206 +
src/asn/rrc/ASN_RRC_SRS-SwitchingTimeEUTRA.h | 79 +
src/asn/rrc/ASN_RRC_SRS-SwitchingTimeNR.c | 178 +
src/asn/rrc/ASN_RRC_SRS-SwitchingTimeNR.h | 65 +
src/asn/rrc/ASN_RRC_SRS-TPC-CommandConfig.c | 207 +
src/asn/rrc/ASN_RRC_SRS-TPC-CommandConfig.h | 51 +
src/asn/rrc/ASN_RRC_SRS-TPC-PDCCH-Config.c | 126 +
src/asn/rrc/ASN_RRC_SRS-TPC-PDCCH-Config.h | 49 +
src/asn/rrc/ASN_RRC_SS-RSSI-Measurement.c | 126 +
src/asn/rrc/ASN_RRC_SS-RSSI-Measurement.h | 42 +
src/asn/rrc/ASN_RRC_SSB-ConfigMobility.c | 74 +
src/asn/rrc/ASN_RRC_SSB-ConfigMobility.h | 50 +
src/asn/rrc/ASN_RRC_SSB-Index.c | 61 +
src/asn/rrc/ASN_RRC_SSB-Index.h | 44 +
src/asn/rrc/ASN_RRC_SSB-MTC.c | 386 +
src/asn/rrc/ASN_RRC_SSB-MTC.h | 75 +
src/asn/rrc/ASN_RRC_SSB-MTC2.c | 193 +
src/asn/rrc/ASN_RRC_SSB-MTC2.h | 62 +
src/asn/rrc/ASN_RRC_SSB-ToMeasure.c | 180 +
src/asn/rrc/ASN_RRC_SSB-ToMeasure.h | 54 +
src/asn/rrc/ASN_RRC_SchedulingInfo.c | 172 +
src/asn/rrc/ASN_RRC_SchedulingInfo.h | 60 +
src/asn/rrc/ASN_RRC_SchedulingRequestConfig.c | 209 +
src/asn/rrc/ASN_RRC_SchedulingRequestConfig.h | 56 +
src/asn/rrc/ASN_RRC_SchedulingRequestId.c | 61 +
src/asn/rrc/ASN_RRC_SchedulingRequestId.h | 44 +
.../ASN_RRC_SchedulingRequestResourceConfig.c | 626 +
.../ASN_RRC_SchedulingRequestResourceConfig.h | 90 +
.../rrc/ASN_RRC_SchedulingRequestResourceId.c | 61 +
.../rrc/ASN_RRC_SchedulingRequestResourceId.h | 44 +
.../rrc/ASN_RRC_SchedulingRequestToAddMod.c | 188 +
.../rrc/ASN_RRC_SchedulingRequestToAddMod.h | 67 +
src/asn/rrc/ASN_RRC_ScramblingId.c | 61 +
src/asn/rrc/ASN_RRC_ScramblingId.h | 44 +
src/asn/rrc/ASN_RRC_SearchSpace.c | 1984 +
src/asn/rrc/ASN_RRC_SearchSpace.h | 288 +
src/asn/rrc/ASN_RRC_SearchSpaceId.c | 61 +
src/asn/rrc/ASN_RRC_SearchSpaceId.h | 44 +
src/asn/rrc/ASN_RRC_SearchSpaceZero.c | 61 +
src/asn/rrc/ASN_RRC_SearchSpaceZero.h | 44 +
src/asn/rrc/ASN_RRC_SecurityAlgorithmConfig.c | 62 +
src/asn/rrc/ASN_RRC_SecurityAlgorithmConfig.h | 46 +
src/asn/rrc/ASN_RRC_SecurityConfig.c | 109 +
src/asn/rrc/ASN_RRC_SecurityConfig.h | 55 +
src/asn/rrc/ASN_RRC_SecurityConfigSMC.c | 50 +
src/asn/rrc/ASN_RRC_SecurityConfigSMC.h | 44 +
src/asn/rrc/ASN_RRC_SecurityModeCommand-IEs.c | 100 +
src/asn/rrc/ASN_RRC_SecurityModeCommand-IEs.h | 47 +
src/asn/rrc/ASN_RRC_SecurityModeCommand.c | 143 +
src/asn/rrc/ASN_RRC_SecurityModeCommand.h | 65 +
.../rrc/ASN_RRC_SecurityModeComplete-IEs.c | 90 +
.../rrc/ASN_RRC_SecurityModeComplete-IEs.h | 45 +
src/asn/rrc/ASN_RRC_SecurityModeComplete.c | 143 +
src/asn/rrc/ASN_RRC_SecurityModeComplete.h | 65 +
src/asn/rrc/ASN_RRC_SecurityModeFailure-IEs.c | 90 +
src/asn/rrc/ASN_RRC_SecurityModeFailure-IEs.h | 45 +
src/asn/rrc/ASN_RRC_SecurityModeFailure.c | 143 +
src/asn/rrc/ASN_RRC_SecurityModeFailure.h | 65 +
src/asn/rrc/ASN_RRC_ServCellIndex.c | 61 +
src/asn/rrc/ASN_RRC_ServCellIndex.h | 44 +
src/asn/rrc/ASN_RRC_ServingCellConfig.c | 948 +
src/asn/rrc/ASN_RRC_ServingCellConfig.h | 178 +
src/asn/rrc/ASN_RRC_ServingCellConfigCommon.c | 687 +
src/asn/rrc/ASN_RRC_ServingCellConfigCommon.h | 122 +
.../rrc/ASN_RRC_ServingCellConfigCommonSIB.c | 383 +
.../rrc/ASN_RRC_ServingCellConfigCommonSIB.h | 81 +
src/asn/rrc/ASN_RRC_SetupRelease.c | 2813 +
src/asn/rrc/ASN_RRC_SetupRelease.h | 1075 +
src/asn/rrc/ASN_RRC_ShortI-RNTI-Value.c | 67 +
src/asn/rrc/ASN_RRC_ShortI-RNTI-Value.h | 44 +
src/asn/rrc/ASN_RRC_ShortMAC-I.c | 67 +
src/asn/rrc/ASN_RRC_ShortMAC-I.h | 44 +
src/asn/rrc/ASN_RRC_SlotFormatCombination.c | 163 +
src/asn/rrc/ASN_RRC_SlotFormatCombination.h | 49 +
src/asn/rrc/ASN_RRC_SlotFormatCombinationId.c | 61 +
src/asn/rrc/ASN_RRC_SlotFormatCombinationId.h | 44 +
.../ASN_RRC_SlotFormatCombinationsPerCell.c | 196 +
.../ASN_RRC_SlotFormatCombinationsPerCell.h | 60 +
src/asn/rrc/ASN_RRC_SlotFormatIndicator.c | 259 +
src/asn/rrc/ASN_RRC_SlotFormatIndicator.h | 64 +
src/asn/rrc/ASN_RRC_SpCellConfig.c | 139 +
src/asn/rrc/ASN_RRC_SpCellConfig.h | 60 +
src/asn/rrc/ASN_RRC_SpatialRelations.c | 284 +
src/asn/rrc/ASN_RRC_SpatialRelations.h | 74 +
src/asn/rrc/ASN_RRC_SpeedStateScaleFactors.c | 160 +
src/asn/rrc/ASN_RRC_SpeedStateScaleFactors.h | 57 +
src/asn/rrc/ASN_RRC_SubcarrierSpacing.c | 65 +
src/asn/rrc/ASN_RRC_SubcarrierSpacing.h | 57 +
src/asn/rrc/ASN_RRC_SupportedBandwidth.c | 176 +
src/asn/rrc/ASN_RRC_SupportedBandwidth.h | 73 +
.../rrc/ASN_RRC_SupportedCSI-RS-Resource.c | 186 +
.../rrc/ASN_RRC_SupportedCSI-RS-Resource.h | 55 +
src/asn/rrc/ASN_RRC_SuspendConfig.c | 103 +
src/asn/rrc/ASN_RRC_SuspendConfig.h | 56 +
src/asn/rrc/ASN_RRC_SystemInformation-IEs.c | 295 +
src/asn/rrc/ASN_RRC_SystemInformation-IEs.h | 101 +
src/asn/rrc/ASN_RRC_SystemInformation.c | 133 +
src/asn/rrc/ASN_RRC_SystemInformation.h | 63 +
src/asn/rrc/ASN_RRC_T-PollRetransmit.c | 177 +
src/asn/rrc/ASN_RRC_T-PollRetransmit.h | 113 +
src/asn/rrc/ASN_RRC_T-Reassembly.c | 113 +
src/asn/rrc/ASN_RRC_T-Reassembly.h | 81 +
src/asn/rrc/ASN_RRC_T-Reselection.c | 61 +
src/asn/rrc/ASN_RRC_T-Reselection.h | 44 +
src/asn/rrc/ASN_RRC_T-StatusProhibit.c | 177 +
src/asn/rrc/ASN_RRC_T-StatusProhibit.h | 113 +
src/asn/rrc/ASN_RRC_TAG-Config.c | 209 +
src/asn/rrc/ASN_RRC_TAG-Config.h | 56 +
src/asn/rrc/ASN_RRC_TAG-Id.c | 61 +
src/asn/rrc/ASN_RRC_TAG-Id.h | 44 +
src/asn/rrc/ASN_RRC_TAG.c | 60 +
src/asn/rrc/ASN_RRC_TAG.h | 46 +
src/asn/rrc/ASN_RRC_TCI-State.c | 73 +
src/asn/rrc/ASN_RRC_TCI-State.h | 50 +
src/asn/rrc/ASN_RRC_TCI-StateId.c | 61 +
src/asn/rrc/ASN_RRC_TCI-StateId.h | 44 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-ConfigCommon.c | 73 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-ConfigCommon.h | 50 +
.../rrc/ASN_RRC_TDD-UL-DL-ConfigDedicated.c | 209 +
.../rrc/ASN_RRC_TDD-UL-DL-ConfigDedicated.h | 60 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-Pattern.c | 371 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-Pattern.h | 73 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotConfig.c | 239 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotConfig.h | 68 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotIndex.c | 61 +
src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotIndex.h | 44 +
src/asn/rrc/ASN_RRC_ThresholdNR.c | 72 +
src/asn/rrc/ASN_RRC_ThresholdNR.h | 44 +
src/asn/rrc/ASN_RRC_TimeAlignmentTimer.c | 65 +
src/asn/rrc/ASN_RRC_TimeAlignmentTimer.h | 57 +
src/asn/rrc/ASN_RRC_TimeToTrigger.c | 81 +
src/asn/rrc/ASN_RRC_TimeToTrigger.h | 65 +
src/asn/rrc/ASN_RRC_TrackingAreaCode.c | 67 +
src/asn/rrc/ASN_RRC_TrackingAreaCode.h | 44 +
...-AccessCategory1-SelectionAssistanceInfo.c | 55 +
...-AccessCategory1-SelectionAssistanceInfo.h | 52 +
src/asn/rrc/ASN_RRC_UAC-BarringInfoSet.c | 238 +
src/asn/rrc/ASN_RRC_UAC-BarringInfoSet.h | 75 +
src/asn/rrc/ASN_RRC_UAC-BarringInfoSetIndex.c | 61 +
src/asn/rrc/ASN_RRC_UAC-BarringInfoSetIndex.h | 44 +
src/asn/rrc/ASN_RRC_UAC-BarringInfoSetList.c | 50 +
src/asn/rrc/ASN_RRC_UAC-BarringInfoSetList.h | 44 +
src/asn/rrc/ASN_RRC_UAC-BarringPerCat.c | 90 +
src/asn/rrc/ASN_RRC_UAC-BarringPerCat.h | 42 +
src/asn/rrc/ASN_RRC_UAC-BarringPerCatList.c | 50 +
src/asn/rrc/ASN_RRC_UAC-BarringPerCatList.h | 44 +
src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN-List.c | 50 +
src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN-List.h | 44 +
src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN.c | 220 +
src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN.h | 69 +
src/asn/rrc/ASN_RRC_UCI-OnPUSCH.c | 240 +
src/asn/rrc/ASN_RRC_UCI-OnPUSCH.h | 75 +
.../rrc/ASN_RRC_UE-CapabilityRAT-Container.c | 60 +
.../rrc/ASN_RRC_UE-CapabilityRAT-Container.h | 42 +
.../ASN_RRC_UE-CapabilityRAT-ContainerList.c | 50 +
.../ASN_RRC_UE-CapabilityRAT-ContainerList.h | 44 +
.../rrc/ASN_RRC_UE-CapabilityRAT-Request.c | 62 +
.../rrc/ASN_RRC_UE-CapabilityRAT-Request.h | 46 +
.../ASN_RRC_UE-CapabilityRAT-RequestList.c | 50 +
.../ASN_RRC_UE-CapabilityRAT-RequestList.h | 44 +
...ASN_RRC_UE-CapabilityRequestFilterCommon.c | 249 +
...ASN_RRC_UE-CapabilityRequestFilterCommon.h | 65 +
...N_RRC_UE-CapabilityRequestFilterNR-v1540.c | 134 +
...N_RRC_UE-CapabilityRequestFilterNR-v1540.h | 51 +
.../ASN_RRC_UE-CapabilityRequestFilterNR.c | 64 +
.../ASN_RRC_UE-CapabilityRequestFilterNR.h | 42 +
.../rrc/ASN_RRC_UE-MRDC-Capability-v1560.c | 148 +
.../rrc/ASN_RRC_UE-MRDC-Capability-v1560.h | 52 +
src/asn/rrc/ASN_RRC_UE-MRDC-Capability.c | 243 +
src/asn/rrc/ASN_RRC_UE-MRDC-Capability.h | 67 +
.../ASN_RRC_UE-MRDC-CapabilityAddFRX-Mode.c | 50 +
.../ASN_RRC_UE-MRDC-CapabilityAddFRX-Mode.h | 40 +
..._RRC_UE-MRDC-CapabilityAddXDD-Mode-v1560.c | 53 +
..._RRC_UE-MRDC-CapabilityAddXDD-Mode-v1560.h | 42 +
.../ASN_RRC_UE-MRDC-CapabilityAddXDD-Mode.c | 64 +
.../ASN_RRC_UE-MRDC-CapabilityAddXDD-Mode.h | 44 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1530.c | 247 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1530.h | 65 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1540.c | 161 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1540.h | 59 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1550.c | 107 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1550.h | 50 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1560.c | 127 +
src/asn/rrc/ASN_RRC_UE-NR-Capability-v1560.h | 49 +
src/asn/rrc/ASN_RRC_UE-NR-Capability.c | 273 +
src/asn/rrc/ASN_RRC_UE-NR-Capability.h | 73 +
...SN_RRC_UE-NR-CapabilityAddFRX-Mode-v1540.c | 53 +
...SN_RRC_UE-NR-CapabilityAddFRX-Mode-v1540.h | 42 +
.../rrc/ASN_RRC_UE-NR-CapabilityAddFRX-Mode.c | 64 +
.../rrc/ASN_RRC_UE-NR-CapabilityAddFRX-Mode.h | 44 +
...SN_RRC_UE-NR-CapabilityAddXDD-Mode-v1530.c | 50 +
...SN_RRC_UE-NR-CapabilityAddXDD-Mode-v1530.h | 40 +
.../rrc/ASN_RRC_UE-NR-CapabilityAddXDD-Mode.c | 75 +
.../rrc/ASN_RRC_UE-NR-CapabilityAddXDD-Mode.h | 46 +
src/asn/rrc/ASN_RRC_UE-TimersAndConstants.c | 512 +
src/asn/rrc/ASN_RRC_UE-TimersAndConstants.h | 127 +
.../rrc/ASN_RRC_UEAssistanceInformation-IEs.c | 74 +
.../rrc/ASN_RRC_UEAssistanceInformation-IEs.h | 46 +
...SN_RRC_UEAssistanceInformation-v1540-IEs.c | 91 +
...SN_RRC_UEAssistanceInformation-v1540-IEs.h | 47 +
src/asn/rrc/ASN_RRC_UEAssistanceInformation.c | 133 +
src/asn/rrc/ASN_RRC_UEAssistanceInformation.h | 63 +
src/asn/rrc/ASN_RRC_UECapabilityEnquiry-IEs.c | 98 +
src/asn/rrc/ASN_RRC_UECapabilityEnquiry-IEs.h | 43 +
.../ASN_RRC_UECapabilityEnquiry-v1560-IEs.c | 91 +
.../ASN_RRC_UECapabilityEnquiry-v1560-IEs.h | 45 +
src/asn/rrc/ASN_RRC_UECapabilityEnquiry.c | 143 +
src/asn/rrc/ASN_RRC_UECapabilityEnquiry.h | 65 +
.../rrc/ASN_RRC_UECapabilityInformation-IEs.c | 101 +
.../rrc/ASN_RRC_UECapabilityInformation-IEs.h | 49 +
src/asn/rrc/ASN_RRC_UECapabilityInformation.c | 143 +
src/asn/rrc/ASN_RRC_UECapabilityInformation.h | 65 +
...C_UERadioAccessCapabilityInformation-IEs.c | 116 +
...C_UERadioAccessCapabilityInformation-IEs.h | 45 +
...N_RRC_UERadioAccessCapabilityInformation.c | 247 +
...N_RRC_UERadioAccessCapabilityInformation.h | 88 +
.../ASN_RRC_UERadioPagingInformation-IEs.c | 163 +
.../ASN_RRC_UERadioPagingInformation-IEs.h | 52 +
.../rrc/ASN_RRC_UERadioPagingInformation.c | 247 +
.../rrc/ASN_RRC_UERadioPagingInformation.h | 88 +
src/asn/rrc/ASN_RRC_UL-AM-RLC.c | 150 +
src/asn/rrc/ASN_RRC_UL-AM-RLC.h | 61 +
src/asn/rrc/ASN_RRC_UL-CCCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_UL-CCCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_UL-CCCH-MessageType.c | 168 +
src/asn/rrc/ASN_RRC_UL-CCCH-MessageType.h | 80 +
src/asn/rrc/ASN_RRC_UL-CCCH1-Message.c | 50 +
src/asn/rrc/ASN_RRC_UL-CCCH1-Message.h | 38 +
src/asn/rrc/ASN_RRC_UL-CCCH1-MessageType.c | 165 +
src/asn/rrc/ASN_RRC_UL-CCCH1-MessageType.h | 78 +
src/asn/rrc/ASN_RRC_UL-DCCH-Message.c | 50 +
src/asn/rrc/ASN_RRC_UL-DCCH-Message.h | 38 +
src/asn/rrc/ASN_RRC_UL-DCCH-MessageType.c | 300 +
src/asn/rrc/ASN_RRC_UL-DCCH-MessageType.h | 116 +
src/asn/rrc/ASN_RRC_UL-DataSplitThreshold.c | 113 +
src/asn/rrc/ASN_RRC_UL-DataSplitThreshold.h | 81 +
src/asn/rrc/ASN_RRC_UL-UM-RLC.c | 52 +
src/asn/rrc/ASN_RRC_UL-UM-RLC.h | 40 +
.../rrc/ASN_RRC_ULInformationTransfer-IEs.c | 100 +
.../rrc/ASN_RRC_ULInformationTransfer-IEs.h | 47 +
src/asn/rrc/ASN_RRC_ULInformationTransfer.c | 133 +
src/asn/rrc/ASN_RRC_ULInformationTransfer.h | 63 +
.../ASN_RRC_ULInformationTransferMRDC-IEs.c | 110 +
.../ASN_RRC_ULInformationTransferMRDC-IEs.h | 47 +
.../rrc/ASN_RRC_ULInformationTransferMRDC.c | 207 +
.../rrc/ASN_RRC_ULInformationTransferMRDC.h | 82 +
src/asn/rrc/ASN_RRC_UplinkConfig.c | 390 +
src/asn/rrc/ASN_RRC_UplinkConfig.h | 81 +
src/asn/rrc/ASN_RRC_UplinkConfigCommon.c | 74 +
src/asn/rrc/ASN_RRC_UplinkConfigCommon.h | 46 +
src/asn/rrc/ASN_RRC_UplinkConfigCommonSIB.c | 70 +
src/asn/rrc/ASN_RRC_UplinkConfigCommonSIB.h | 44 +
.../rrc/ASN_RRC_UplinkTxDirectCurrentBWP.c | 100 +
.../rrc/ASN_RRC_UplinkTxDirectCurrentBWP.h | 44 +
.../rrc/ASN_RRC_UplinkTxDirectCurrentCell.c | 264 +
.../rrc/ASN_RRC_UplinkTxDirectCurrentCell.h | 66 +
.../rrc/ASN_RRC_UplinkTxDirectCurrentList.c | 50 +
.../rrc/ASN_RRC_UplinkTxDirectCurrentList.h | 44 +
src/asn/rrc/ASN_RRC_VarMeasConfig.c | 150 +
src/asn/rrc/ASN_RRC_VarMeasConfig.h | 65 +
src/asn/rrc/ASN_RRC_VarMeasReport.c | 73 +
src/asn/rrc/ASN_RRC_VarMeasReport.h | 46 +
src/asn/rrc/ASN_RRC_VarMeasReportList.c | 50 +
src/asn/rrc/ASN_RRC_VarMeasReportList.h | 41 +
src/asn/rrc/ASN_RRC_VarPendingRNA-Update.c | 52 +
src/asn/rrc/ASN_RRC_VarPendingRNA-Update.h | 38 +
src/asn/rrc/ASN_RRC_VarResumeMAC-Input.c | 70 +
src/asn/rrc/ASN_RRC_VarResumeMAC-Input.h | 42 +
src/asn/rrc/ASN_RRC_VarShortMAC-Input.c | 70 +
src/asn/rrc/ASN_RRC_VarShortMAC-Input.h | 42 +
src/asn/rrc/ASN_RRC_VictimSystemType.c | 366 +
src/asn/rrc/ASN_RRC_VictimSystemType.h | 71 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-Resource.c | 73 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-Resource.h | 50 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceId.c | 61 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceId.h | 44 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSet.c | 133 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSet.h | 53 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSetId.c | 61 +
src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSetId.h | 44 +
src/asn/rrc/ASN_RRC_asn_constant.h | 368 +
src/asn/rrc/CMakeLists.txt | 5 +
src/binder.cpp | 113 +
src/cli.cpp | 309 +
src/ext/CMakeLists.txt | 9 +
src/ext/compact25519/c25519/README.md | 4 +
src/ext/compact25519/c25519/c25519.c | 126 +
src/ext/compact25519/c25519/c25519.h | 49 +
src/ext/compact25519/c25519/ed25519.c | 323 +
src/ext/compact25519/c25519/ed25519.h | 84 +
src/ext/compact25519/c25519/edsign.c | 171 +
src/ext/compact25519/c25519/edsign.h | 53 +
src/ext/compact25519/c25519/f25519.c | 330 +
src/ext/compact25519/c25519/f25519.h | 98 +
src/ext/compact25519/c25519/fprime.c | 226 +
src/ext/compact25519/c25519/fprime.h | 81 +
src/ext/compact25519/c25519/sha512.c | 230 +
src/ext/compact25519/c25519/sha512.h | 54 +
src/ext/compact25519/compact_wipe.c | 12 +
src/ext/compact25519/compact_wipe.h | 14 +
src/ext/compact25519/compact_x25519.c | 68 +
src/ext/compact25519/compact_x25519.h | 101 +
src/ext/compact25519/compact_x25519.hpp | 14 +
src/ext/crypt-ext/aes.c | 555 +
src/ext/crypt-ext/aes.h | 93 +
src/ext/crypt-ext/aes.hpp | 14 +
src/ext/crypt-ext/apicheck.h | 50 +
src/ext/crypt-ext/cmac.c | 396 +
src/ext/crypt-ext/cmac.hpp | 8 +
src/ext/crypt-ext/hmac-sha256.c | 98 +
src/ext/crypt-ext/hmac-sha256.h | 28 +
src/ext/crypt-ext/milenage.c | 904 +
src/ext/crypt-ext/milenage.h | 31 +
src/ext/crypt-ext/milenage.hpp | 10 +
src/ext/crypt-ext/rotate-bits.h | 40 +
src/ext/crypt-ext/sha256.c | 215 +
src/ext/crypt-ext/sha256.h | 30 +
src/ext/crypt-ext/x963kdf.c | 46 +
src/ext/crypt-ext/x963kdf.h | 23 +
src/ext/spdlog/async.h | 93 +
src/ext/spdlog/async_logger-inl.h | 92 +
src/ext/spdlog/async_logger.h | 68 +
src/ext/spdlog/cfg/argv.h | 44 +
src/ext/spdlog/cfg/env.h | 38 +
src/ext/spdlog/cfg/helpers-inl.h | 120 +
src/ext/spdlog/cfg/helpers.h | 29 +
src/ext/spdlog/common-inl.h | 76 +
src/ext/spdlog/common.h | 245 +
src/ext/spdlog/details/backtracer-inl.h | 69 +
src/ext/spdlog/details/backtracer.h | 45 +
src/ext/spdlog/details/circular_q.h | 141 +
src/ext/spdlog/details/console_globals.h | 32 +
src/ext/spdlog/details/file_helper-inl.h | 132 +
src/ext/spdlog/details/file_helper.h | 59 +
src/ext/spdlog/details/fmt_helper.h | 116 +
src/ext/spdlog/details/log_msg-inl.h | 37 +
src/ext/spdlog/details/log_msg.h | 36 +
src/ext/spdlog/details/log_msg_buffer-inl.h | 58 +
src/ext/spdlog/details/log_msg_buffer.h | 33 +
src/ext/spdlog/details/mpmc_blocking_q.h | 126 +
src/ext/spdlog/details/null_mutex.h | 49 +
src/ext/spdlog/details/os-inl.h | 554 +
src/ext/spdlog/details/os.h | 111 +
src/ext/spdlog/details/periodic_worker-inl.h | 49 +
src/ext/spdlog/details/periodic_worker.h | 40 +
src/ext/spdlog/details/registry-inl.h | 313 +
src/ext/spdlog/details/registry.h | 115 +
src/ext/spdlog/details/synchronous_factory.h | 24 +
src/ext/spdlog/details/tcp_client-windows.h | 175 +
src/ext/spdlog/details/tcp_client.h | 146 +
src/ext/spdlog/details/thread_pool-inl.h | 129 +
src/ext/spdlog/details/thread_pool.h | 121 +
src/ext/spdlog/details/windows_include.h | 11 +
src/ext/spdlog/fmt/bin_to_hex.h | 216 +
src/ext/spdlog/fmt/bundled/LICENSE.rst | 27 +
src/ext/spdlog/fmt/bundled/chrono.h | 1118 +
src/ext/spdlog/fmt/bundled/color.h | 603 +
src/ext/spdlog/fmt/bundled/compile.h | 701 +
src/ext/spdlog/fmt/bundled/core.h | 2122 +
src/ext/spdlog/fmt/bundled/format-inl.h | 2801 +
src/ext/spdlog/fmt/bundled/format.h | 3960 +
src/ext/spdlog/fmt/bundled/locale.h | 64 +
src/ext/spdlog/fmt/bundled/os.h | 480 +
src/ext/spdlog/fmt/bundled/ostream.h | 177 +
src/ext/spdlog/fmt/bundled/posix.h | 2 +
src/ext/spdlog/fmt/bundled/printf.h | 751 +
src/ext/spdlog/fmt/bundled/ranges.h | 396 +
src/ext/spdlog/fmt/chrono.h | 20 +
src/ext/spdlog/fmt/fmt.h | 27 +
src/ext/spdlog/fmt/ostr.h | 20 +
src/ext/spdlog/formatter.h | 18 +
src/ext/spdlog/fwd.h | 14 +
src/ext/spdlog/logger-inl.h | 257 +
src/ext/spdlog/logger.h | 366 +
src/ext/spdlog/pattern_formatter-inl.h | 1373 +
src/ext/spdlog/pattern_formatter.h | 126 +
src/ext/spdlog/sinks/ansicolor_sink-inl.h | 143 +
src/ext/spdlog/sinks/ansicolor_sink.h | 118 +
src/ext/spdlog/sinks/base_sink-inl.h | 63 +
src/ext/spdlog/sinks/base_sink.h | 52 +
src/ext/spdlog/sinks/basic_file_sink-inl.h | 43 +
src/ext/spdlog/sinks/basic_file_sink.h | 58 +
src/ext/spdlog/sinks/daily_file_sink.h | 204 +
src/ext/spdlog/sinks/dist_sink.h | 97 +
src/ext/spdlog/sinks/dup_filter_sink.h | 90 +
src/ext/spdlog/sinks/msvc_sink.h | 49 +
src/ext/spdlog/sinks/null_sink.h | 44 +
src/ext/spdlog/sinks/ostream_sink.h | 50 +
src/ext/spdlog/sinks/ringbuffer_sink.h | 74 +
src/ext/spdlog/sinks/rotating_file_sink-inl.h | 131 +
src/ext/spdlog/sinks/rotating_file_sink.h | 78 +
src/ext/spdlog/sinks/sink-inl.h | 25 +
src/ext/spdlog/sinks/sink.h | 35 +
src/ext/spdlog/sinks/stdout_color_sinks-inl.h | 38 +
src/ext/spdlog/sinks/stdout_color_sinks.h | 45 +
src/ext/spdlog/sinks/stdout_sinks-inl.h | 123 +
src/ext/spdlog/sinks/stdout_sinks.h | 87 +
src/ext/spdlog/sinks/syslog_sink.h | 109 +
src/ext/spdlog/sinks/systemd_sink.h | 103 +
src/ext/spdlog/sinks/tcp_sink.h | 81 +
src/ext/spdlog/sinks/win_eventlog_sink.h | 266 +
src/ext/spdlog/sinks/wincolor_sink-inl.h | 170 +
src/ext/spdlog/sinks/wincolor_sink.h | 94 +
src/ext/spdlog/spdlog-inl.h | 125 +
src/ext/spdlog/spdlog.h | 295 +
src/ext/spdlog/stopwatch.h | 61 +
src/ext/spdlog/tweakme.h | 116 +
src/ext/spdlog/version.h | 10 +
src/ext/yaml-cpp/anchor.h | 17 +
src/ext/yaml-cpp/binary.cpp | 100 +
src/ext/yaml-cpp/binary.h | 71 +
src/ext/yaml-cpp/collectionstack.h | 41 +
src/ext/yaml-cpp/contrib/anchordict.h | 40 +
src/ext/yaml-cpp/contrib/graphbuilder.cpp | 16 +
src/ext/yaml-cpp/contrib/graphbuilder.h | 149 +
.../yaml-cpp/contrib/graphbuilderadapter.cpp | 94 +
.../yaml-cpp/contrib/graphbuilderadapter.h | 87 +
src/ext/yaml-cpp/contrib/yaml-cpp.natvis | 32 +
src/ext/yaml-cpp/contrib/yaml-cpp.natvis.md | 9 +
src/ext/yaml-cpp/convert.cpp | 74 +
src/ext/yaml-cpp/depthguard.cpp | 9 +
src/ext/yaml-cpp/depthguard.h | 77 +
src/ext/yaml-cpp/directives.cpp | 17 +
src/ext/yaml-cpp/directives.h | 29 +
src/ext/yaml-cpp/dll.h | 33 +
src/ext/yaml-cpp/emit.cpp | 25 +
src/ext/yaml-cpp/emitfromevents.cpp | 124 +
src/ext/yaml-cpp/emitfromevents.h | 57 +
src/ext/yaml-cpp/emitter.cpp | 971 +
src/ext/yaml-cpp/emitter.h | 281 +
src/ext/yaml-cpp/emitterdef.h | 16 +
src/ext/yaml-cpp/emittermanip.h | 144 +
src/ext/yaml-cpp/emitterstate.cpp | 400 +
src/ext/yaml-cpp/emitterstate.h | 216 +
src/ext/yaml-cpp/emitterstyle.h | 16 +
src/ext/yaml-cpp/emitterutils.cpp | 497 +
src/ext/yaml-cpp/emitterutils.h | 55 +
src/ext/yaml-cpp/eventhandler.h | 45 +
src/ext/yaml-cpp/exceptions.cpp | 20 +
src/ext/yaml-cpp/exceptions.h | 303 +
src/ext/yaml-cpp/exp.cpp | 137 +
src/ext/yaml-cpp/exp.h | 222 +
src/ext/yaml-cpp/indentation.h | 41 +
src/ext/yaml-cpp/mark.h | 29 +
src/ext/yaml-cpp/memory.cpp | 26 +
src/ext/yaml-cpp/node.cpp | 12 +
src/ext/yaml-cpp/node/convert.h | 392 +
src/ext/yaml-cpp/node/detail/impl.h | 235 +
src/ext/yaml-cpp/node/detail/iterator.h | 96 +
src/ext/yaml-cpp/node/detail/iterator_fwd.h | 27 +
src/ext/yaml-cpp/node/detail/memory.h | 47 +
src/ext/yaml-cpp/node/detail/node.h | 177 +
src/ext/yaml-cpp/node/detail/node_data.h | 127 +
src/ext/yaml-cpp/node/detail/node_iterator.h | 181 +
src/ext/yaml-cpp/node/detail/node_ref.h | 98 +
src/ext/yaml-cpp/node/emit.h | 32 +
src/ext/yaml-cpp/node/impl.h | 385 +
src/ext/yaml-cpp/node/iterator.h | 31 +
src/ext/yaml-cpp/node/node.h | 148 +
src/ext/yaml-cpp/node/parse.h | 78 +
src/ext/yaml-cpp/node/ptr.h | 29 +
src/ext/yaml-cpp/node/type.h | 16 +
src/ext/yaml-cpp/node_data.cpp | 324 +
src/ext/yaml-cpp/nodebuilder.cpp | 134 +
src/ext/yaml-cpp/nodebuilder.h | 74 +
src/ext/yaml-cpp/nodeevents.cpp | 98 +
src/ext/yaml-cpp/nodeevents.h | 68 +
src/ext/yaml-cpp/noexcept.h | 18 +
src/ext/yaml-cpp/null.cpp | 10 +
src/ext/yaml-cpp/null.h | 26 +
src/ext/yaml-cpp/ostream_wrapper.cpp | 62 +
src/ext/yaml-cpp/ostream_wrapper.h | 76 +
src/ext/yaml-cpp/parse.cpp | 72 +
src/ext/yaml-cpp/parser.cpp | 119 +
src/ext/yaml-cpp/parser.h | 90 +
src/ext/yaml-cpp/ptr_vector.h | 45 +
src/ext/yaml-cpp/regex_yaml.cpp | 43 +
src/ext/yaml-cpp/regex_yaml.h | 88 +
src/ext/yaml-cpp/regeximpl.h | 185 +
src/ext/yaml-cpp/scanner.cpp | 391 +
src/ext/yaml-cpp/scanner.h | 190 +
src/ext/yaml-cpp/scanscalar.cpp | 251 +
src/ext/yaml-cpp/scanscalar.h | 63 +
src/ext/yaml-cpp/scantag.cpp | 81 +
src/ext/yaml-cpp/scantag.h | 19 +
src/ext/yaml-cpp/scantoken.cpp | 437 +
src/ext/yaml-cpp/setting.h | 100 +
src/ext/yaml-cpp/simplekey.cpp | 132 +
src/ext/yaml-cpp/singledocparser.cpp | 432 +
src/ext/yaml-cpp/singledocparser.h | 71 +
src/ext/yaml-cpp/stlemitter.h | 50 +
src/ext/yaml-cpp/stream.cpp | 446 +
src/ext/yaml-cpp/stream.h | 82 +
src/ext/yaml-cpp/streamcharsource.h | 50 +
src/ext/yaml-cpp/stringsource.h | 48 +
src/ext/yaml-cpp/tag.cpp | 50 +
src/ext/yaml-cpp/tag.h | 33 +
src/ext/yaml-cpp/token.h | 70 +
src/ext/yaml-cpp/traits.h | 135 +
src/ext/yaml-cpp/yaml.h | 24 +
src/gnb.cpp | 229 +
src/gnb/CMakeLists.txt | 11 +
src/gnb/app/cmd_handler.cpp | 160 +
src/gnb/app/cmd_handler.hpp | 42 +
src/gnb/app/task.cpp | 60 +
src/gnb/app/task.hpp | 43 +
src/gnb/gnb.cpp | 76 +
src/gnb/gnb.hpp | 36 +
src/gnb/gtp/proto.cpp | 416 +
src/gnb/gtp/proto.hpp | 159 +
src/gnb/gtp/task.cpp | 287 +
src/gnb/gtp/task.hpp | 61 +
src/gnb/gtp/utils.cpp | 235 +
src/gnb/gtp/utils.hpp | 95 +
src/gnb/ngap/context.cpp | 324 +
src/gnb/ngap/encode.cpp | 14 +
src/gnb/ngap/encode.hpp | 96 +
src/gnb/ngap/interface.cpp | 362 +
src/gnb/ngap/management.cpp | 157 +
src/gnb/ngap/nas.cpp | 248 +
src/gnb/ngap/nnsf.cpp | 35 +
src/gnb/ngap/radio.cpp | 59 +
src/gnb/ngap/session.cpp | 316 +
src/gnb/ngap/task.cpp | 108 +
src/gnb/ngap/task.hpp | 129 +
src/gnb/ngap/transport.cpp | 407 +
src/gnb/ngap/utils.cpp | 230 +
src/gnb/ngap/utils.hpp | 65 +
src/gnb/nts.cpp | 9 +
src/gnb/nts.hpp | 312 +
src/gnb/rls/ctl_task.cpp | 258 +
src/gnb/rls/ctl_task.hpp | 52 +
src/gnb/rls/task.cpp | 135 +
src/gnb/rls/task.hpp | 52 +
src/gnb/rls/udp_task.cpp | 201 +
src/gnb/rls/udp_task.hpp | 63 +
src/gnb/rrc/broadcast.cpp | 122 +
src/gnb/rrc/channel.cpp | 227 +
src/gnb/rrc/connection.cpp | 135 +
src/gnb/rrc/handler.cpp | 137 +
src/gnb/rrc/management.cpp | 21 +
src/gnb/rrc/sap.cpp | 33 +
src/gnb/rrc/task.cpp | 90 +
src/gnb/rrc/task.hpp | 112 +
src/gnb/rrc/ues.cpp | 42 +
src/gnb/sctp/task.cpp | 335 +
src/gnb/sctp/task.hpp | 68 +
src/gnb/types.cpp | 106 +
src/gnb/types.hpp | 358 +
src/lib/CMakeLists.txt | 14 +
src/lib/app/CMakeLists.txt | 9 +
src/lib/app/base_app.cpp | 58 +
src/lib/app/base_app.hpp | 24 +
src/lib/app/cli_base.cpp | 70 +
src/lib/app/cli_base.hpp | 145 +
src/lib/app/cli_cmd.cpp | 358 +
src/lib/app/cli_cmd.hpp | 84 +
src/lib/app/monitor.cpp | 9 +
src/lib/app/monitor.hpp | 58 +
src/lib/app/proc_table.cpp | 116 +
src/lib/app/proc_table.hpp | 54 +
src/lib/app/ue_ctl.cpp | 9 +
src/lib/app/ue_ctl.hpp | 27 +
src/lib/asn/ngap.cpp | 1043 +
src/lib/asn/ngap.hpp | 101 +
src/lib/asn/ngap_msg.hpp | 1578 +
src/lib/asn/rrc.cpp | 77 +
src/lib/asn/rrc.hpp | 24 +
src/lib/asn/utils.cpp | 177 +
src/lib/asn/utils.hpp | 217 +
src/lib/crypt/crypt.cpp | 176 +
src/lib/crypt/crypt.hpp | 47 +
src/lib/crypt/eea2.cpp | 48 +
src/lib/crypt/eea2.hpp | 19 +
src/lib/crypt/eea3.cpp | 119 +
src/lib/crypt/eea3.hpp | 20 +
src/lib/crypt/eia2.cpp | 39 +
src/lib/crypt/eia2.hpp | 18 +
src/lib/crypt/mac.cpp | 27 +
src/lib/crypt/mac.hpp | 21 +
src/lib/crypt/milenage.cpp | 46 +
src/lib/crypt/milenage.hpp | 32 +
src/lib/crypt/snow3g.cpp | 216 +
src/lib/crypt/snow3g.hpp | 17 +
src/lib/crypt/uea2.cpp | 127 +
src/lib/crypt/uea2.hpp | 19 +
src/lib/crypt/zuc.cpp | 184 +
src/lib/crypt/zuc.hpp | 19 +
src/lib/nas/base.cpp | 104 +
src/lib/nas/base.hpp | 248 +
src/lib/nas/eap.cpp | 268 +
src/lib/nas/eap.hpp | 202 +
src/lib/nas/encode.cpp | 387 +
src/lib/nas/encode.hpp | 19 +
src/lib/nas/enums.cpp | 33 +
src/lib/nas/enums.hpp | 764 +
src/lib/nas/ie1.cpp | 327 +
src/lib/nas/ie1.hpp | 241 +
src/lib/nas/ie2.cpp | 9 +
src/lib/nas/ie2.hpp | 14 +
src/lib/nas/ie3.cpp | 264 +
src/lib/nas/ie3.hpp | 172 +
src/lib/nas/ie4.cpp | 1119 +
src/lib/nas/ie4.hpp | 578 +
src/lib/nas/ie6.cpp | 492 +
src/lib/nas/ie6.hpp | 209 +
src/lib/nas/msg.cpp | 680 +
src/lib/nas/msg.hpp | 636 +
src/lib/nas/nas.cpp | 9 +
src/lib/nas/nas.hpp | 15 +
src/lib/nas/proto_conf.cpp | 74 +
src/lib/nas/proto_conf.hpp | 131 +
src/lib/nas/storage.cpp | 14 +
src/lib/nas/storage.hpp | 281 +
src/lib/nas/utils.cpp | 567 +
src/lib/nas/utils.hpp | 106 +
src/lib/nas/values.cpp | 551 +
src/lib/nas/values.hpp | 258 +
src/lib/rlc/encoder.cpp | 296 +
src/lib/rlc/encoder.hpp | 30 +
src/lib/rlc/entity_am.cpp | 937 +
src/lib/rlc/entity_am.hpp | 131 +
src/lib/rlc/entity_tm.cpp | 97 +
src/lib/rlc/entity_tm.hpp | 53 +
src/lib/rlc/entity_um.cpp | 337 +
src/lib/rlc/entity_um.hpp | 79 +
src/lib/rlc/func.cpp | 9 +
src/lib/rlc/func.hpp | 572 +
src/lib/rlc/rlc.cpp | 34 +
src/lib/rlc/rlc.hpp | 62 +
src/lib/rlc/test.cpp | 188 +
src/lib/rlc/test.hpp | 16 +
src/lib/rlc/utils.cpp | 17 +
src/lib/rlc/utils.hpp | 259 +
src/lib/rls/rls_base.cpp | 15 +
src/lib/rls/rls_base.hpp | 32 +
src/lib/rls/rls_pdu.cpp | 112 +
src/lib/rls/rls_pdu.hpp | 94 +
src/lib/rrc/encode.cpp | 9 +
src/lib/rrc/encode.hpp | 95 +
src/lib/rrc/rrc.cpp | 9 +
src/lib/rrc/rrc.hpp | 26 +
src/lib/sctp/client.cpp | 60 +
src/lib/sctp/client.hpp | 39 +
src/lib/sctp/internal.cpp | 260 +
src/lib/sctp/internal.hpp | 29 +
src/lib/sctp/sctp.cpp | 9 +
src/lib/sctp/sctp.hpp | 13 +
src/lib/sctp/server.cpp | 37 +
src/lib/sctp/server.hpp | 31 +
src/lib/sctp/types.cpp | 9 +
src/lib/sctp/types.hpp | 48 +
src/lib/udp/server.cpp | 57 +
src/lib/udp/server.hpp | 31 +
src/lib/udp/server_task.cpp | 56 +
src/lib/udp/server_task.hpp | 49 +
src/ue.cpp | 538 +
src/ue/CMakeLists.txt | 7 +
src/ue/app/cmd_handler.cpp | 273 +
src/ue/app/cmd_handler.hpp | 42 +
src/ue/app/task.cpp | 214 +
src/ue/app/task.hpp | 49 +
src/ue/nas/enc.cpp | 185 +
src/ue/nas/enc.hpp | 24 +
src/ue/nas/keys.cpp | 167 +
src/ue/nas/keys.hpp | 84 +
src/ue/nas/mm/access.cpp | 309 +
src/ue/nas/mm/auth.cpp | 545 +
src/ue/nas/mm/base.cpp | 449 +
src/ue/nas/mm/config.cpp | 240 +
src/ue/nas/mm/dereg.cpp | 370 +
src/ue/nas/mm/ecall.cpp | 102 +
src/ue/nas/mm/identity.cpp | 207 +
src/ue/nas/mm/messaging.cpp | 392 +
src/ue/nas/mm/mm.hpp | 209 +
src/ue/nas/mm/proc.cpp | 204 +
src/ue/nas/mm/radio.cpp | 388 +
src/ue/nas/mm/register.cpp | 1037 +
src/ue/nas/mm/sap.cpp | 88 +
src/ue/nas/mm/security.cpp | 299 +
src/ue/nas/mm/service.cpp | 490 +
src/ue/nas/mm/slice.cpp | 77 +
src/ue/nas/mm/timer.cpp | 182 +
src/ue/nas/mm/transport.cpp | 158 +
src/ue/nas/sm/allocation.cpp | 79 +
src/ue/nas/sm/base.cpp | 32 +
src/ue/nas/sm/establishment.cpp | 207 +
src/ue/nas/sm/procedure.cpp | 87 +
src/ue/nas/sm/release.cpp | 168 +
src/ue/nas/sm/resource.cpp | 158 +
src/ue/nas/sm/sap.cpp | 107 +
src/ue/nas/sm/sm.hpp | 99 +
src/ue/nas/sm/timer.cpp | 89 +
src/ue/nas/sm/transport.cpp | 164 +
src/ue/nas/storage.cpp | 79 +
src/ue/nas/storage.hpp | 53 +
src/ue/nas/task.cpp | 175 +
src/ue/nas/task.hpp | 49 +
src/ue/nas/usim/sqn_mng.cpp | 73 +
src/ue/nas/usim/sqn_mng.hpp | 43 +
src/ue/nas/usim/usim.cpp | 31 +
src/ue/nas/usim/usim.hpp | 48 +
src/ue/nts.cpp | 14 +
src/ue/nts.hpp | 349 +
src/ue/rls/ctl_task.cpp | 251 +
src/ue/rls/ctl_task.hpp | 56 +
src/ue/rls/task.cpp | 148 +
src/ue/rls/task.hpp | 53 +
src/ue/rls/udp_task.cpp | 175 +
src/ue/rls/udp_task.hpp | 68 +
src/ue/rrc/access.cpp | 67 +
src/ue/rrc/cells.cpp | 104 +
src/ue/rrc/channel.cpp | 211 +
src/ue/rrc/connection.cpp | 158 +
src/ue/rrc/failures.cpp | 29 +
src/ue/rrc/handler.cpp | 59 +
src/ue/rrc/idle.cpp | 291 +
src/ue/rrc/nas.cpp | 73 +
src/ue/rrc/sap.cpp | 67 +
src/ue/rrc/state.cpp | 59 +
src/ue/rrc/sysinfo.cpp | 75 +
src/ue/rrc/task.cpp | 88 +
src/ue/rrc/task.hpp | 142 +
src/ue/timer.cpp | 147 +
src/ue/timer.hpp | 45 +
src/ue/tun/config.cpp | 382 +
src/ue/tun/config.hpp | 21 +
src/ue/tun/task.cpp | 123 +
src/ue/tun/task.hpp | 43 +
src/ue/tun/tun.cpp | 50 +
src/ue/tun/tun.hpp | 19 +
src/ue/types.cpp | 307 +
src/ue/types.hpp | 659 +
src/ue/ue.cpp | 68 +
src/ue/ue.hpp | 35 +
src/utils/CMakeLists.txt | 9 +
src/utils/bit_buffer.cpp | 9 +
src/utils/bit_buffer.hpp | 125 +
src/utils/bit_string.cpp | 9 +
src/utils/bit_string.hpp | 52 +
src/utils/bits.cpp | 9 +
src/utils/bits.hpp | 277 +
src/utils/common.cpp | 333 +
src/utils/common.hpp | 77 +
src/utils/common_types.cpp | 251 +
src/utils/common_types.hpp | 242 +
src/utils/concurrent_map.cpp | 9 +
src/utils/concurrent_map.hpp | 59 +
src/utils/constants.hpp | 42 +
src/utils/io.cpp | 277 +
src/utils/io.hpp | 49 +
src/utils/json.cpp | 413 +
src/utils/json.hpp | 153 +
src/utils/libc_error.cpp | 28 +
src/utils/libc_error.hpp | 18 +
src/utils/light_sync.cpp | 9 +
src/utils/light_sync.hpp | 85 +
src/utils/linked_list.cpp | 9 +
src/utils/linked_list.hpp | 225 +
src/utils/locked.cpp | 9 +
src/utils/locked.hpp | 77 +
src/utils/logger.cpp | 102 +
src/utils/logger.hpp | 125 +
src/utils/network.cpp | 305 +
src/utils/network.hpp | 80 +
src/utils/nts.cpp | 258 +
src/utils/nts.hpp | 177 +
src/utils/octet.cpp | 39 +
src/utils/octet.hpp | 244 +
src/utils/octet_string.cpp | 330 +
src/utils/octet_string.hpp | 116 +
src/utils/octet_view.cpp | 54 +
src/utils/octet_view.hpp | 131 +
src/utils/options.cpp | 427 +
src/utils/options.hpp | 138 +
src/utils/ordered_map.cpp | 9 +
src/utils/ordered_map.hpp | 68 +
src/utils/printer.cpp | 92 +
src/utils/printer.hpp | 35 +
src/utils/random.cpp | 84 +
src/utils/random.hpp | 48 +
src/utils/scoped_thread.cpp | 71 +
src/utils/scoped_thread.hpp | 21 +
src/utils/time_stamp.cpp | 9 +
src/utils/time_stamp.hpp | 45 +
src/utils/unique_buffer.cpp | 9 +
src/utils/unique_buffer.hpp | 70 +
src/utils/yaml_utils.cpp | 201 +
src/utils/yaml_utils.hpp | 50 +
tools/ngap-15.8.0.asn1 | 6886 ++
tools/ngap-17.9.asn | 12004 +++
tools/nr-binder | 20 +
tools/rls-wireshark-dissector.lua | 114 +
tools/rrc-15.6.0.asn1 | 7390 ++
4264 files changed, 625612 insertions(+), 1 deletion(-)
create mode 100644 .clang-format
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 CMakeLists.txt
create mode 100644 CONTRIBUTING.md
create mode 100644 LICENSE
create mode 100644 config/custom-gnb.yaml
create mode 100644 config/custom-ue.yaml
create mode 100644 config/free5gc-gnb.yaml
create mode 100644 config/free5gc-ue.yaml
create mode 100644 config/open5gs-gnb.yaml
create mode 100644 config/open5gs-ue.yaml
create mode 100644 src/asn/asn1c/ANY.c
create mode 100644 src/asn/asn1c/ANY.h
create mode 100644 src/asn/asn1c/BIT_STRING.c
create mode 100644 src/asn/asn1c/BIT_STRING.h
create mode 100644 src/asn/asn1c/BOOLEAN.c
create mode 100644 src/asn/asn1c/BOOLEAN.h
create mode 100644 src/asn/asn1c/CMakeLists.txt
create mode 100644 src/asn/asn1c/INTEGER.c
create mode 100644 src/asn/asn1c/INTEGER.h
create mode 100644 src/asn/asn1c/Makefile.am.libasncodec
create mode 100644 src/asn/asn1c/NULL.c
create mode 100644 src/asn/asn1c/NULL.h
create mode 100644 src/asn/asn1c/NativeEnumerated.c
create mode 100644 src/asn/asn1c/NativeEnumerated.h
create mode 100644 src/asn/asn1c/NativeInteger.c
create mode 100644 src/asn/asn1c/NativeInteger.h
create mode 100644 src/asn/asn1c/OBJECT_IDENTIFIER.c
create mode 100644 src/asn/asn1c/OBJECT_IDENTIFIER.h
create mode 100644 src/asn/asn1c/OCTET_STRING.c
create mode 100644 src/asn/asn1c/OCTET_STRING.h
create mode 100644 src/asn/asn1c/OPEN_TYPE.c
create mode 100644 src/asn/asn1c/OPEN_TYPE.h
create mode 100644 src/asn/asn1c/PrintableString.c
create mode 100644 src/asn/asn1c/PrintableString.h
create mode 100644 src/asn/asn1c/UTF8String.c
create mode 100644 src/asn/asn1c/UTF8String.h
create mode 100644 src/asn/asn1c/VisibleString.c
create mode 100644 src/asn/asn1c/VisibleString.h
create mode 100644 src/asn/asn1c/asn_SEQUENCE_OF.c
create mode 100644 src/asn/asn1c/asn_SEQUENCE_OF.h
create mode 100644 src/asn/asn1c/asn_SET_OF.c
create mode 100644 src/asn/asn1c/asn_SET_OF.h
create mode 100644 src/asn/asn1c/asn_application.c
create mode 100644 src/asn/asn1c/asn_application.h
create mode 100644 src/asn/asn1c/asn_bit_data.c
create mode 100644 src/asn/asn1c/asn_bit_data.h
create mode 100644 src/asn/asn1c/asn_codecs.h
create mode 100644 src/asn/asn1c/asn_codecs_prim.c
create mode 100644 src/asn/asn1c/asn_codecs_prim.h
create mode 100644 src/asn/asn1c/asn_internal.c
create mode 100644 src/asn/asn1c/asn_internal.h
create mode 100644 src/asn/asn1c/asn_ioc.h
create mode 100644 src/asn/asn1c/asn_random_fill.c
create mode 100644 src/asn/asn1c/asn_random_fill.h
create mode 100644 src/asn/asn1c/asn_system.h
create mode 100644 src/asn/asn1c/ber_decoder.c
create mode 100644 src/asn/asn1c/ber_decoder.h
create mode 100644 src/asn/asn1c/ber_tlv_length.c
create mode 100644 src/asn/asn1c/ber_tlv_length.h
create mode 100644 src/asn/asn1c/ber_tlv_tag.c
create mode 100644 src/asn/asn1c/ber_tlv_tag.h
create mode 100644 src/asn/asn1c/constr_CHOICE.c
create mode 100644 src/asn/asn1c/constr_CHOICE.h
create mode 100644 src/asn/asn1c/constr_SEQUENCE.c
create mode 100644 src/asn/asn1c/constr_SEQUENCE.h
create mode 100644 src/asn/asn1c/constr_SEQUENCE_OF.c
create mode 100644 src/asn/asn1c/constr_SEQUENCE_OF.h
create mode 100644 src/asn/asn1c/constr_SET_OF.c
create mode 100644 src/asn/asn1c/constr_SET_OF.h
create mode 100644 src/asn/asn1c/constr_TYPE.c
create mode 100644 src/asn/asn1c/constr_TYPE.h
create mode 100644 src/asn/asn1c/constraints.c
create mode 100644 src/asn/asn1c/constraints.h
create mode 100644 src/asn/asn1c/der_encoder.c
create mode 100644 src/asn/asn1c/der_encoder.h
create mode 100644 src/asn/asn1c/per_decoder.c
create mode 100644 src/asn/asn1c/per_decoder.h
create mode 100644 src/asn/asn1c/per_encoder.c
create mode 100644 src/asn/asn1c/per_encoder.h
create mode 100644 src/asn/asn1c/per_opentype.c
create mode 100644 src/asn/asn1c/per_opentype.h
create mode 100644 src/asn/asn1c/per_support.c
create mode 100644 src/asn/asn1c/per_support.h
create mode 100644 src/asn/asn1c/xer_decoder.c
create mode 100644 src/asn/asn1c/xer_decoder.h
create mode 100644 src/asn/asn1c/xer_encoder.c
create mode 100644 src/asn/asn1c/xer_encoder.h
create mode 100644 src/asn/asn1c/xer_support.c
create mode 100644 src/asn/asn1c/xer_support.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationSetupItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationSetupItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationSetupList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationSetupList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToAddItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToAddItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToAddList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToAddList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToRemoveItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToRemoveItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToRemoveList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToRemoveList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToUpdateItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToUpdateItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToUpdateList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-TNLAssociationToUpdateList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-UE-NGAP-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMF-UE-NGAP-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFCPRelocationIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFCPRelocationIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFConfigurationUpdate.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFConfigurationUpdate.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFConfigurationUpdateAcknowledge.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFConfigurationUpdateAcknowledge.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFConfigurationUpdateFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFConfigurationUpdateFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFName.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFName.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFNameUTF8String.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFNameUTF8String.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFNameVisibleString.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFNameVisibleString.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFPagingTarget.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFPagingTarget.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFPointer.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFPointer.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFRegionID.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFRegionID.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFSetID.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFSetID.h
create mode 100644 src/asn/ngap/ASN_NGAP_AMFStatusIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_AMFStatusIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_ActivatedCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_ActivatedCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AdditionalQosFlowInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_AdditionalQosFlowInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_AllocationAndRetentionPriority.c
create mode 100644 src/asn/ngap/ASN_NGAP_AllocationAndRetentionPriority.h
create mode 100644 src/asn/ngap/ASN_NGAP_Allowed-CAG-List-per-PLMN.c
create mode 100644 src/asn/ngap/ASN_NGAP_Allowed-CAG-List-per-PLMN.h
create mode 100644 src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-List.c
create mode 100644 src/asn/ngap/ASN_NGAP_Allowed-PNI-NPN-List.h
create mode 100644 src/asn/ngap/ASN_NGAP_AllowedNSSAI-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_AllowedNSSAI-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_AllowedNSSAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_AllowedNSSAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_AllowedTACs.c
create mode 100644 src/asn/ngap/ASN_NGAP_AllowedTACs.h
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetIndex.c
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetIndex.h
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetNotifyIndex.c
create mode 100644 src/asn/ngap/ASN_NGAP_AlternativeQoSParaSetNotifyIndex.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterest.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterest.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestCellItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestCellItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestRANNodeItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestRANNodeItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestRANNodeList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestRANNodeList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestTAIItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestTAIItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestTAIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaOfInterestTAIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfMDT-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfNeighCellsItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfNeighCellsItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfNeighCellsList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfNeighCellsList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_AreaScopeOfQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssistanceDataForPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssistanceDataForPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssistanceDataForRecommendedCells.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssistanceDataForRecommendedCells.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedQosFlowItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedQosFlowItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedQosFlowList.c
create mode 100644 src/asn/ngap/ASN_NGAP_AssociatedQosFlowList.h
create mode 100644 src/asn/ngap/ASN_NGAP_AuthenticatedIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_AuthenticatedIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_AvailableRANVisibleQoEMetrics.c
create mode 100644 src/asn/ngap/ASN_NGAP_AvailableRANVisibleQoEMetrics.h
create mode 100644 src/asn/ngap/ASN_NGAP_AveragingWindow.c
create mode 100644 src/asn/ngap/ASN_NGAP_AveragingWindow.h
create mode 100644 src/asn/ngap/ASN_NGAP_BeamMeasurementsReportConfiguration.c
create mode 100644 src/asn/ngap/ASN_NGAP_BeamMeasurementsReportConfiguration.h
create mode 100644 src/asn/ngap/ASN_NGAP_BeamMeasurementsReportQuantity.c
create mode 100644 src/asn/ngap/ASN_NGAP_BeamMeasurementsReportQuantity.h
create mode 100644 src/asn/ngap/ASN_NGAP_BitRate.c
create mode 100644 src/asn/ngap/ASN_NGAP_BitRate.h
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasConfig.c
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasConfig.h
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasConfigNameItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasConfigNameItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasConfigNameList.c
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasConfigNameList.h
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasurementConfiguration.c
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothMeasurementConfiguration.h
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothName.c
create mode 100644 src/asn/ngap/ASN_NGAP_BluetoothName.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastCancelledAreaList.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastCancelledAreaList.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastCompletedAreaList.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastCompletedAreaList.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastPLMNItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastPLMNItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastPLMNList.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastPLMNList.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionModificationFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionModificationFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionModificationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionModificationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionModificationResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionModificationResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionReleaseRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionReleaseRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionReleaseRequired.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionReleaseRequired.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionReleaseResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionReleaseResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionSetupFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionSetupFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionSetupRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionSetupRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionSetupResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_BroadcastSessionSetupResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_BurstArrivalTime.c
create mode 100644 src/asn/ngap/ASN_NGAP_BurstArrivalTime.h
create mode 100644 src/asn/ngap/ASN_NGAP_CAG-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_CAG-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_CEmodeBSupport-Indicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_CEmodeBSupport-Indicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_CEmodeBrestricted.c
create mode 100644 src/asn/ngap/ASN_NGAP_CEmodeBrestricted.h
create mode 100644 src/asn/ngap/ASN_NGAP_CNAssistedRANTuning.c
create mode 100644 src/asn/ngap/ASN_NGAP_CNAssistedRANTuning.h
create mode 100644 src/asn/ngap/ASN_NGAP_CNTypeRestrictionsForEquivalent.c
create mode 100644 src/asn/ngap/ASN_NGAP_CNTypeRestrictionsForEquivalent.h
create mode 100644 src/asn/ngap/ASN_NGAP_CNTypeRestrictionsForEquivalentItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_CNTypeRestrictionsForEquivalentItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_CNTypeRestrictionsForServing.c
create mode 100644 src/asn/ngap/ASN_NGAP_CNTypeRestrictionsForServing.h
create mode 100644 src/asn/ngap/ASN_NGAP_CNsubgroupID.c
create mode 100644 src/asn/ngap/ASN_NGAP_CNsubgroupID.h
create mode 100644 src/asn/ngap/ASN_NGAP_COUNTValueForPDCP-SN12.c
create mode 100644 src/asn/ngap/ASN_NGAP_COUNTValueForPDCP-SN12.h
create mode 100644 src/asn/ngap/ASN_NGAP_COUNTValueForPDCP-SN18.c
create mode 100644 src/asn/ngap/ASN_NGAP_COUNTValueForPDCP-SN18.h
create mode 100644 src/asn/ngap/ASN_NGAP_CPTransportLayerInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_CPTransportLayerInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelAllWarningMessages.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelAllWarningMessages.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-NR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-NR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInEAI-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-NR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-NR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CancelledCellsInTAI-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCell.c
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCell.h
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCellID.c
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCellID.h
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCellItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCellItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_CandidateCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_CandidatePCI.c
create mode 100644 src/asn/ngap/ASN_NGAP_CandidatePCI.h
create mode 100644 src/asn/ngap/ASN_NGAP_Cause.c
create mode 100644 src/asn/ngap/ASN_NGAP_Cause.h
create mode 100644 src/asn/ngap/ASN_NGAP_CauseMisc.c
create mode 100644 src/asn/ngap/ASN_NGAP_CauseMisc.h
create mode 100644 src/asn/ngap/ASN_NGAP_CauseNas.c
create mode 100644 src/asn/ngap/ASN_NGAP_CauseNas.h
create mode 100644 src/asn/ngap/ASN_NGAP_CauseProtocol.c
create mode 100644 src/asn/ngap/ASN_NGAP_CauseProtocol.h
create mode 100644 src/asn/ngap/ASN_NGAP_CauseRadioNetwork.c
create mode 100644 src/asn/ngap/ASN_NGAP_CauseRadioNetwork.h
create mode 100644 src/asn/ngap/ASN_NGAP_CauseTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_CauseTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_Cell-CAGInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_Cell-CAGInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellBasedMDT-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellBasedMDT-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellBasedMDT-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellBasedMDT-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellBasedQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellBasedQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellCAGList.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellCAGList.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastEUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastEUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastNR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastNR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDBroadcastNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledEUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledEUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledNR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledNR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDCancelledNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDListForRestart.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIDListForRestart.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIdListforMDT-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIdListforMDT-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIdListforMDT-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIdListforMDT-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellIdListforQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellIdListforQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellSize.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellSize.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellTrafficTrace.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellTrafficTrace.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellType.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellType.h
create mode 100644 src/asn/ngap/ASN_NGAP_CellsToActivateList.c
create mode 100644 src/asn/ngap/ASN_NGAP_CellsToActivateList.h
create mode 100644 src/asn/ngap/ASN_NGAP_CommonNetworkInstance.c
create mode 100644 src/asn/ngap/ASN_NGAP_CommonNetworkInstance.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-NR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-NR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInEAI-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-NR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-NR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompletedCellsInTAI-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_CompositeAvailableCapacity.c
create mode 100644 src/asn/ngap/ASN_NGAP_CompositeAvailableCapacity.h
create mode 100644 src/asn/ngap/ASN_NGAP_ConcurrentWarningMessageInd.c
create mode 100644 src/asn/ngap/ASN_NGAP_ConcurrentWarningMessageInd.h
create mode 100644 src/asn/ngap/ASN_NGAP_ConfidentialityProtectionIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_ConfidentialityProtectionIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_ConfidentialityProtectionResult.c
create mode 100644 src/asn/ngap/ASN_NGAP_ConfidentialityProtectionResult.h
create mode 100644 src/asn/ngap/ASN_NGAP_ConfiguredNSSAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_ConfiguredNSSAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_ConfiguredTACIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_ConfiguredTACIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_ConnectionEstablishmentIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_ConnectionEstablishmentIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_CoreNetworkAssistanceInformationForInactive.c
create mode 100644 src/asn/ngap/ASN_NGAP_CoreNetworkAssistanceInformationForInactive.h
create mode 100644 src/asn/ngap/ASN_NGAP_CoverageEnhancementLevel.c
create mode 100644 src/asn/ngap/ASN_NGAP_CoverageEnhancementLevel.h
create mode 100644 src/asn/ngap/ASN_NGAP_Criticality.c
create mode 100644 src/asn/ngap/ASN_NGAP_Criticality.h
create mode 100644 src/asn/ngap/ASN_NGAP_CriticalityDiagnostics-IE-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_CriticalityDiagnostics-IE-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_CriticalityDiagnostics-IE-List.c
create mode 100644 src/asn/ngap/ASN_NGAP_CriticalityDiagnostics-IE-List.h
create mode 100644 src/asn/ngap/ASN_NGAP_CriticalityDiagnostics.c
create mode 100644 src/asn/ngap/ASN_NGAP_CriticalityDiagnostics.h
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSRequestInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSRequestInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSResponseInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSResponseInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSResponseInfoItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSResponseInfoItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSResponseInfoList.c
create mode 100644 src/asn/ngap/ASN_NGAP_DAPSResponseInfoList.h
create mode 100644 src/asn/ngap/ASN_NGAP_DL-CP-SecurityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_DL-CP-SecurityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_DL-NAS-MAC.c
create mode 100644 src/asn/ngap/ASN_NGAP_DL-NAS-MAC.h
create mode 100644 src/asn/ngap/ASN_NGAP_DL-NGU-TNLInformationReused.c
create mode 100644 src/asn/ngap/ASN_NGAP_DL-NGU-TNLInformationReused.h
create mode 100644 src/asn/ngap/ASN_NGAP_DLForwarding.c
create mode 100644 src/asn/ngap/ASN_NGAP_DLForwarding.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusDL.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusDL.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusDL12.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusDL12.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusDL18.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusDL18.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusUL.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusUL.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusUL12.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusUL12.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusUL18.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBStatusUL18.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-List.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-List.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToStatusTransferItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToStatusTransferItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToStatusTransferList.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsSubjectToStatusTransferList.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsToQosFlowsMappingItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsToQosFlowsMappingItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsToQosFlowsMappingList.c
create mode 100644 src/asn/ngap/ASN_NGAP_DRBsToQosFlowsMappingList.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataCodingScheme.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataCodingScheme.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingAccepted.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingAccepted.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingNotPossible.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingNotPossible.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseDRBItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseDRBItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseDRBList.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseDRBList.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseERABList.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseERABList.h
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseERABListItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_DataForwardingResponseERABListItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_DeactivateTrace.c
create mode 100644 src/asn/ngap/ASN_NGAP_DeactivateTrace.h
create mode 100644 src/asn/ngap/ASN_NGAP_DelayCritical.c
create mode 100644 src/asn/ngap/ASN_NGAP_DelayCritical.h
create mode 100644 src/asn/ngap/ASN_NGAP_DirectForwardingPathAvailability.c
create mode 100644 src/asn/ngap/ASN_NGAP_DirectForwardingPathAvailability.h
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionReleaseRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionReleaseRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionReleaseResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionReleaseResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionSetupFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionSetupFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionSetupRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionSetupRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionSetupResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_DistributionSetupResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkNASTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkNASTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkNonUEAssociatedNRPPaTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkNonUEAssociatedNRPPaTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRANConfigurationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRANConfigurationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRANEarlyStatusTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRANEarlyStatusTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRANStatusTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRANStatusTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRIMInformationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkRIMInformationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkUEAssociatedNRPPaTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_DownlinkUEAssociatedNRPPaTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_Dynamic5QIDescriptor.c
create mode 100644 src/asn/ngap/ASN_NGAP_Dynamic5QIDescriptor.h
create mode 100644 src/asn/ngap/ASN_NGAP_E-RAB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_E-RAB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_E-RABInformationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_E-RABInformationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_E-RABInformationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_E-RABInformationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_EDT-Session.c
create mode 100644 src/asn/ngap/ASN_NGAP_EDT-Session.h
create mode 100644 src/asn/ngap/ASN_NGAP_EN-DCSONConfigurationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_EN-DCSONConfigurationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_ENB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_ENB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_EPS-TAC.c
create mode 100644 src/asn/ngap/ASN_NGAP_EPS-TAC.h
create mode 100644 src/asn/ngap/ASN_NGAP_EPS-TAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_EPS-TAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-CGI.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-CGI.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-CGIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-CGIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-CGIListForWarning.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-CGIListForWarning.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-Paging-Time-Window.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-Paging-Time-Window.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-Paging-eDRX-Cycle.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-Paging-eDRX-Cycle.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-PagingeDRXInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRA-PagingeDRXInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRACellIdentity.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRACellIdentity.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellReportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellReportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellToReportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellToReportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellToReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CellToReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CompositeAvailableCapacityGroup.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-CompositeAvailableCapacityGroup.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-NumberOfActiveUEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-NumberOfActiveUEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-RadioResourceStatus.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-RadioResourceStatus.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-ReportingStatusIEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-ReportingStatusIEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-ReportingSystemIEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAN-ReportingSystemIEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAencryptionAlgorithms.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAencryptionAlgorithms.h
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAintegrityProtectionAlgorithms.c
create mode 100644 src/asn/ngap/ASN_NGAP_EUTRAintegrityProtectionAlgorithms.h
create mode 100644 src/asn/ngap/ASN_NGAP_EarlyMeasurement.c
create mode 100644 src/asn/ngap/ASN_NGAP_EarlyMeasurement.h
create mode 100644 src/asn/ngap/ASN_NGAP_EarlyStatusTransfer-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_EarlyStatusTransfer-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaID.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaID.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledNR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledNR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDCancelledNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDList.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDList.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDListForRestart.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyAreaIDListForRestart.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyFallbackIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyFallbackIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyFallbackRequestIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyFallbackRequestIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyServiceTargetCN.c
create mode 100644 src/asn/ngap/ASN_NGAP_EmergencyServiceTargetCN.h
create mode 100644 src/asn/ngap/ASN_NGAP_EndIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_EndIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_EndpointIPAddressAndPort.c
create mode 100644 src/asn/ngap/ASN_NGAP_EndpointIPAddressAndPort.h
create mode 100644 src/asn/ngap/ASN_NGAP_Enhanced-CoverageRestriction.c
create mode 100644 src/asn/ngap/ASN_NGAP_Enhanced-CoverageRestriction.h
create mode 100644 src/asn/ngap/ASN_NGAP_EquivalentPLMNs.c
create mode 100644 src/asn/ngap/ASN_NGAP_EquivalentPLMNs.h
create mode 100644 src/asn/ngap/ASN_NGAP_ErrorIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_ErrorIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_EventBasedReportingIEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_EventBasedReportingIEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_EventL1LoggedMDTConfig.c
create mode 100644 src/asn/ngap/ASN_NGAP_EventL1LoggedMDTConfig.h
create mode 100644 src/asn/ngap/ASN_NGAP_EventTrigger.c
create mode 100644 src/asn/ngap/ASN_NGAP_EventTrigger.h
create mode 100644 src/asn/ngap/ASN_NGAP_EventType.c
create mode 100644 src/asn/ngap/ASN_NGAP_EventType.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExcessPacketDelayThresholdConfiguration.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExcessPacketDelayThresholdConfiguration.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExcessPacketDelayThresholdItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExcessPacketDelayThresholdItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExcessPacketDelayThresholdValue.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExcessPacketDelayThresholdValue.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedActivityPeriod.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedActivityPeriod.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedHOInterval.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedHOInterval.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedIdlePeriod.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedIdlePeriod.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEActivityBehaviour.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEActivityBehaviour.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEBehaviour.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEBehaviour.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEMobility.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEMobility.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEMovingTrajectory.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEMovingTrajectory.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEMovingTrajectoryItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExpectedUEMovingTrajectoryItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_Extended-AMFName.c
create mode 100644 src/asn/ngap/ASN_NGAP_Extended-AMFName.h
create mode 100644 src/asn/ngap/ASN_NGAP_Extended-ConnectedTime.c
create mode 100644 src/asn/ngap/ASN_NGAP_Extended-ConnectedTime.h
create mode 100644 src/asn/ngap/ASN_NGAP_Extended-RANNodeName.c
create mode 100644 src/asn/ngap/ASN_NGAP_Extended-RANNodeName.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedMobilityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedMobilityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedPacketDelayBudget.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedPacketDelayBudget.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedRATRestrictionInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedRATRestrictionInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedRNC-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedRNC-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedReportIntervalMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedReportIntervalMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedSliceSupportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedSliceSupportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedUEIdentityIndexValue.c
create mode 100644 src/asn/ngap/ASN_NGAP_ExtendedUEIdentityIndexValue.h
create mode 100644 src/asn/ngap/ASN_NGAP_FailureIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_FailureIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_FirstDLCount.c
create mode 100644 src/asn/ngap/ASN_NGAP_FirstDLCount.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-ProSeAuthorized.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-ProSeAuthorized.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-ProSePC5QoSParameters.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-ProSePC5QoSParameters.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-S-TMSI.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-S-TMSI.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-TMSI.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveG-TMSI.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeDirectCommunication.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeDirectCommunication.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeDirectDiscovery.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeDirectDiscovery.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeLayer2RemoteUE.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeLayer2RemoteUE.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeLayer2UEtoNetworkRelay.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeLayer2UEtoNetworkRelay.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeLayer3UEtoNetworkRelay.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSeLayer3UEtoNetworkRelay.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSePC5FlowBitRates.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSePC5FlowBitRates.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSePC5QoSFlowItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSePC5QoSFlowItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSePC5QoSFlowList.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveGProSePC5QoSFlowList.h
create mode 100644 src/asn/ngap/ASN_NGAP_FiveQI.c
create mode 100644 src/asn/ngap/ASN_NGAP_FiveQI.h
create mode 100644 src/asn/ngap/ASN_NGAP_ForbiddenAreaInformation-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_ForbiddenAreaInformation-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_ForbiddenAreaInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_ForbiddenAreaInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_ForbiddenTACs.c
create mode 100644 src/asn/ngap/ASN_NGAP_ForbiddenTACs.h
create mode 100644 src/asn/ngap/ASN_NGAP_FromEUTRANtoNGRAN.c
create mode 100644 src/asn/ngap/ASN_NGAP_FromEUTRANtoNGRAN.h
create mode 100644 src/asn/ngap/ASN_NGAP_FromNGRANtoEUTRAN.c
create mode 100644 src/asn/ngap/ASN_NGAP_FromNGRANtoEUTRAN.h
create mode 100644 src/asn/ngap/ASN_NGAP_GBR-QosInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_GBR-QosInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_GNB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GNB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GNBSetID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GNBSetID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GTP-TEID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GTP-TEID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GTPTunnel.c
create mode 100644 src/asn/ngap/ASN_NGAP_GTPTunnel.h
create mode 100644 src/asn/ngap/ASN_NGAP_GUAMI.c
create mode 100644 src/asn/ngap/ASN_NGAP_GUAMI.h
create mode 100644 src/asn/ngap/ASN_NGAP_GUAMIType.c
create mode 100644 src/asn/ngap/ASN_NGAP_GUAMIType.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalCable-ID-new.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalCable-ID-new.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalCable-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalCable-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalENB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalENB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalGNB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalGNB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalLine-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalLine-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalLineIdentity.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalLineIdentity.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalN3IWF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalN3IWF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalNgENB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalNgENB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalRANNodeID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalRANNodeID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalTNGF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalTNGF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalTWIF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalTWIF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalW-AGF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_GlobalW-AGF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_HFCNode-ID-new.c
create mode 100644 src/asn/ngap/ASN_NGAP_HFCNode-ID-new.h
create mode 100644 src/asn/ngap/ASN_NGAP_HFCNode-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_HFCNode-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_HOReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_HOReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCancel.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCancel.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCancelAcknowledge.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCancelAcknowledge.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCommand.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCommand.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCommandTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverCommandTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverFlag.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverFlag.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverNotify.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverNotify.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverPreparationFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverPreparationFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverPreparationUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverPreparationUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequestAcknowledge.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequestAcknowledge.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequestAcknowledgeTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequestAcknowledgeTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequired.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequired.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequiredTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverRequiredTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverResourceAllocationUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverResourceAllocationUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverSuccess.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverSuccess.h
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverType.c
create mode 100644 src/asn/ngap/ASN_NGAP_HandoverType.h
create mode 100644 src/asn/ngap/ASN_NGAP_HashedUEIdentityIndexValue.c
create mode 100644 src/asn/ngap/ASN_NGAP_HashedUEIdentityIndexValue.h
create mode 100644 src/asn/ngap/ASN_NGAP_Hysteresis.c
create mode 100644 src/asn/ngap/ASN_NGAP_Hysteresis.h
create mode 100644 src/asn/ngap/ASN_NGAP_IAB-Authorized.c
create mode 100644 src/asn/ngap/ASN_NGAP_IAB-Authorized.h
create mode 100644 src/asn/ngap/ASN_NGAP_IAB-Supported.c
create mode 100644 src/asn/ngap/ASN_NGAP_IAB-Supported.h
create mode 100644 src/asn/ngap/ASN_NGAP_IABNodeIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_IABNodeIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_IMSVoiceSupportIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_IMSVoiceSupportIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_ImmediateMDTNr.c
create mode 100644 src/asn/ngap/ASN_NGAP_ImmediateMDTNr.h
create mode 100644 src/asn/ngap/ASN_NGAP_IncludeBeamMeasurementsIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_IncludeBeamMeasurementsIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_IndexToRFSP.c
create mode 100644 src/asn/ngap/ASN_NGAP_IndexToRFSP.h
create mode 100644 src/asn/ngap/ASN_NGAP_InfoOnRecommendedCellsAndRANNodesForPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_InfoOnRecommendedCellsAndRANNodesForPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_InitialContextSetupFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_InitialContextSetupFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_InitialContextSetupRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_InitialContextSetupRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_InitialContextSetupResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_InitialContextSetupResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_InitialUEMessage.c
create mode 100644 src/asn/ngap/ASN_NGAP_InitialUEMessage.h
create mode 100644 src/asn/ngap/ASN_NGAP_InitiatingMessage.c
create mode 100644 src/asn/ngap/ASN_NGAP_InitiatingMessage.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntegrityProtectionIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntegrityProtectionIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntegrityProtectionResult.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntegrityProtectionResult.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntendedNumberOfPagingAttempts.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntendedNumberOfPagingAttempts.h
create mode 100644 src/asn/ngap/ASN_NGAP_InterSystemFailureIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_InterSystemFailureIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_InterSystemHOReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_InterSystemHOReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_InterSystemHandoverReportType.c
create mode 100644 src/asn/ngap/ASN_NGAP_InterSystemHandoverReportType.h
create mode 100644 src/asn/ngap/ASN_NGAP_InterfacesToTrace.c
create mode 100644 src/asn/ngap/ASN_NGAP_InterfacesToTrace.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemCellActivationReply.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemCellActivationReply.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemCellActivationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemCellActivationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemCellStateIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemCellStateIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceStatusReply.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceStatusReply.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceStatusReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceStatusReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceStatusRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceStatusRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceThreshold.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemResourceThreshold.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONConfigurationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONConfigurationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformationReply.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformationReply.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformationReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformationReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONInformationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONNGRANnodeID.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONNGRANnodeID.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONTransferType.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONTransferType.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONeNBID.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemSONeNBID.h
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemUnnecessaryHO.c
create mode 100644 src/asn/ngap/ASN_NGAP_IntersystemUnnecessaryHO.h
create mode 100644 src/asn/ngap/ASN_NGAP_LAC.c
create mode 100644 src/asn/ngap/ASN_NGAP_LAC.h
create mode 100644 src/asn/ngap/ASN_NGAP_LAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_LAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_LTEM-Indication.c
create mode 100644 src/asn/ngap/ASN_NGAP_LTEM-Indication.h
create mode 100644 src/asn/ngap/ASN_NGAP_LTEUERLFReportContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_LTEUERLFReportContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_LTEUESidelinkAggregateMaximumBitrate.c
create mode 100644 src/asn/ngap/ASN_NGAP_LTEUESidelinkAggregateMaximumBitrate.h
create mode 100644 src/asn/ngap/ASN_NGAP_LTEV2XServicesAuthorized.c
create mode 100644 src/asn/ngap/ASN_NGAP_LTEV2XServicesAuthorized.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedCellInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedCellInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedCellItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedCellItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedEUTRANCellInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedEUTRANCellInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedGERANCellInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedGERANCellInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedNGRANCellInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedNGRANCellInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedPSCellInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedPSCellInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedPSCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedPSCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedUTRANCellInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_LastVisitedUTRANCellInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_LineType.c
create mode 100644 src/asn/ngap/ASN_NGAP_LineType.h
create mode 100644 src/asn/ngap/ASN_NGAP_Links-to-log.c
create mode 100644 src/asn/ngap/ASN_NGAP_Links-to-log.h
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingAdditionalInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingAdditionalInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingControl.c
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingControl.h
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingFailureIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingFailureIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingReferenceID.c
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingReferenceID.h
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingRequestType.c
create mode 100644 src/asn/ngap/ASN_NGAP_LocationReportingRequestType.h
create mode 100644 src/asn/ngap/ASN_NGAP_LoggedMDTNr.c
create mode 100644 src/asn/ngap/ASN_NGAP_LoggedMDTNr.h
create mode 100644 src/asn/ngap/ASN_NGAP_LoggedMDTTrigger.c
create mode 100644 src/asn/ngap/ASN_NGAP_LoggedMDTTrigger.h
create mode 100644 src/asn/ngap/ASN_NGAP_LoggingDuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_LoggingDuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_LoggingInterval.c
create mode 100644 src/asn/ngap/ASN_NGAP_LoggingInterval.h
create mode 100644 src/asn/ngap/ASN_NGAP_M1Configuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_M1Configuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_M1PeriodicReporting.c
create mode 100644 src/asn/ngap/ASN_NGAP_M1PeriodicReporting.h
create mode 100644 src/asn/ngap/ASN_NGAP_M1ReportingTrigger.c
create mode 100644 src/asn/ngap/ASN_NGAP_M1ReportingTrigger.h
create mode 100644 src/asn/ngap/ASN_NGAP_M1ThresholdEventA2.c
create mode 100644 src/asn/ngap/ASN_NGAP_M1ThresholdEventA2.h
create mode 100644 src/asn/ngap/ASN_NGAP_M1ThresholdType.c
create mode 100644 src/asn/ngap/ASN_NGAP_M1ThresholdType.h
create mode 100644 src/asn/ngap/ASN_NGAP_M4Configuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_M4Configuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_M4ReportAmountMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_M4ReportAmountMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_M4period.c
create mode 100644 src/asn/ngap/ASN_NGAP_M4period.h
create mode 100644 src/asn/ngap/ASN_NGAP_M5Configuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_M5Configuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_M5ReportAmountMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_M5ReportAmountMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_M5period.c
create mode 100644 src/asn/ngap/ASN_NGAP_M5period.h
create mode 100644 src/asn/ngap/ASN_NGAP_M6Configuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_M6Configuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_M6ReportAmountMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_M6ReportAmountMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_M6report-Interval.c
create mode 100644 src/asn/ngap/ASN_NGAP_M6report-Interval.h
create mode 100644 src/asn/ngap/ASN_NGAP_M7Configuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_M7Configuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_M7ReportAmountMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_M7ReportAmountMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_M7period.c
create mode 100644 src/asn/ngap/ASN_NGAP_M7period.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-AreaSessionID.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-AreaSessionID.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-AreaTAIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-AreaTAIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DataForwardingResponseMRBItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DataForwardingResponseMRBItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DataForwardingResponseMRBList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DataForwardingResponseMRBList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionReleaseRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionReleaseRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionSetupRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionSetupRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionSetupResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionSetupResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionSetupUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-DistributionSetupUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-QoSFlowList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-QoSFlowList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceArea.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceArea.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaInformationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaInformationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaInformationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaInformationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaTAIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-ServiceAreaTAIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionFSAID.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionFSAID.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionFSAIDList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionFSAIDList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionID.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionID.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GC.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GC.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GCItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GCItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GCList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfo5GCList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfoNGRAN.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfoNGRAN.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SupportIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBS-SupportIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionFailedtoSetupItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionFailedtoSetupItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionFailedtoSetupList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionFailedtoSetupList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionReleaseResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionReleaseResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupOrModFailureTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupOrModFailureTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupOrModRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupOrModRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupOrModResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupOrModResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupResponseItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupResponseItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupResponseList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetupResponseList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetuporModifyRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetuporModifyRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetuporModifyRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionSetuporModifyRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionStatus.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionStatus.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionToReleaseItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionToReleaseItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionToReleaseList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MBSSessionToReleaseList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Activation.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Activation.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-AlignmentInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-AlignmentInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Configuration-EUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Configuration-EUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Configuration-NR.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Configuration-NR.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Configuration.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Configuration.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Location-Info.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Location-Info.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Location-Information.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDT-Location-Information.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDTModeEutra.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDTModeEutra.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDTModeNr.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDTModeNr.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDTPLMNList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDTPLMNList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MDTPLMNModificationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MDTPLMNModificationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MICOModeIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_MICOModeIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_MRB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_MRB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_MRB-ProgressInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_MRB-ProgressInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_MaskedIMEISV.c
create mode 100644 src/asn/ngap/ASN_NGAP_MaskedIMEISV.h
create mode 100644 src/asn/ngap/ASN_NGAP_MaxNrofRS-IndexesToReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_MaxNrofRS-IndexesToReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_MaximumDataBurstVolume.c
create mode 100644 src/asn/ngap/ASN_NGAP_MaximumDataBurstVolume.h
create mode 100644 src/asn/ngap/ASN_NGAP_MaximumIntegrityProtectedDataRate.c
create mode 100644 src/asn/ngap/ASN_NGAP_MaximumIntegrityProtectedDataRate.h
create mode 100644 src/asn/ngap/ASN_NGAP_MeasurementThresholdL1LoggedMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_MeasurementThresholdL1LoggedMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_MeasurementsToActivate.c
create mode 100644 src/asn/ngap/ASN_NGAP_MeasurementsToActivate.h
create mode 100644 src/asn/ngap/ASN_NGAP_MessageIdentifier.c
create mode 100644 src/asn/ngap/ASN_NGAP_MessageIdentifier.h
create mode 100644 src/asn/ngap/ASN_NGAP_MicoAllPLMN.c
create mode 100644 src/asn/ngap/ASN_NGAP_MicoAllPLMN.h
create mode 100644 src/asn/ngap/ASN_NGAP_MobilityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_MobilityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_MobilityRestrictionList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MobilityRestrictionList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPagingArea.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPagingArea.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPagingAreaItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPagingAreaItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPagingAreaList.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastGroupPagingAreaList.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionActivationResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionDeactivationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionDeactivationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionDeactivationRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionDeactivationRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionDeactivationResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionDeactivationResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_MulticastSessionUpdateResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_N3IWF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_N3IWF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_NAS-PDU.c
create mode 100644 src/asn/ngap/ASN_NGAP_NAS-PDU.h
create mode 100644 src/asn/ngap/ASN_NGAP_NASNonDeliveryIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_NASNonDeliveryIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_NASSecurityParametersFromNGRAN.c
create mode 100644 src/asn/ngap/ASN_NGAP_NASSecurityParametersFromNGRAN.h
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-DefaultPagingDRX.c
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-DefaultPagingDRX.h
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-Paging-TimeWindow.c
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-Paging-TimeWindow.h
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-Paging-eDRXCycle.c
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-Paging-eDRXCycle.h
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-Paging-eDRXInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-Paging-eDRXInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-PagingDRX.c
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-PagingDRX.h
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-UEPriority.c
create mode 100644 src/asn/ngap/ASN_NGAP_NB-IoT-UEPriority.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGAP-PDU.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGAP-PDU.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationResponseItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationResponseItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationResponseList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGAPIESupportInformationResponseList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CGI.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CGI.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellReportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellReportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellToReportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellToReportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellToReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-CellToReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-NoofRRCConnections.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-NoofRRCConnections.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-NumberOfActiveUEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-NumberOfActiveUEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-RadioResourceStatus.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-RadioResourceStatus.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-ReportingStatusIEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-ReportingStatusIEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-ReportingSystemIEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-ReportingSystemIEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGRANTraceID.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGRANTraceID.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGReset.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGReset.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGResetAcknowledge.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGResetAcknowledge.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGSetupFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGSetupFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGSetupRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGSetupRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_NGSetupResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_NGSetupResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_NID.c
create mode 100644 src/asn/ngap/ASN_NGAP_NID.h
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-AccessInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-AccessInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-MobilityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-MobilityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-PagingAssistanceInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-PagingAssistanceInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-Support.c
create mode 100644 src/asn/ngap/ASN_NGAP_NPN-Support.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-CGI.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-CGI.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-CGIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-CGIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-CGIListForWarning.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-CGIListForWarning.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-PCI.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-PCI.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-Paging-Time-Window.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-Paging-Time-Window.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-Paging-eDRX-Cycle.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-Paging-eDRX-Cycle.h
create mode 100644 src/asn/ngap/ASN_NGAP_NR-PagingeDRXInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_NR-PagingeDRXInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRARFCN.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRARFCN.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRCellIdentity.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRCellIdentity.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyBand-List.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyBand-List.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyBand.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyBand.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyBandItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyBandItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRFrequencyInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRMobilityHistoryReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRMobilityHistoryReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRNTNTAIInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRNTNTAIInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRPPa-PDU.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRPPa-PDU.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRUERLFReportContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRUERLFReportContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRUESidelinkAggregateMaximumBitrate.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRUESidelinkAggregateMaximumBitrate.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRV2XServicesAuthorized.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRV2XServicesAuthorized.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRencryptionAlgorithms.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRencryptionAlgorithms.h
create mode 100644 src/asn/ngap/ASN_NGAP_NRintegrityProtectionAlgorithms.c
create mode 100644 src/asn/ngap/ASN_NGAP_NRintegrityProtectionAlgorithms.h
create mode 100644 src/asn/ngap/ASN_NGAP_NSAG-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_NSAG-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_NetworkInstance.c
create mode 100644 src/asn/ngap/ASN_NGAP_NetworkInstance.h
create mode 100644 src/asn/ngap/ASN_NGAP_NewSecurityContextInd.c
create mode 100644 src/asn/ngap/ASN_NGAP_NewSecurityContextInd.h
create mode 100644 src/asn/ngap/ASN_NGAP_NextHopChainingCount.c
create mode 100644 src/asn/ngap/ASN_NGAP_NextHopChainingCount.h
create mode 100644 src/asn/ngap/ASN_NGAP_NextPagingAreaScope.c
create mode 100644 src/asn/ngap/ASN_NGAP_NextPagingAreaScope.h
create mode 100644 src/asn/ngap/ASN_NGAP_NgENB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_NgENB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_NonDynamic5QIDescriptor.c
create mode 100644 src/asn/ngap/ASN_NGAP_NonDynamic5QIDescriptor.h
create mode 100644 src/asn/ngap/ASN_NGAP_NotAllowedTACs.c
create mode 100644 src/asn/ngap/ASN_NGAP_NotAllowedTACs.h
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationCause.c
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationCause.h
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationCell-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationCell-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationControl.c
create mode 100644 src/asn/ngap/ASN_NGAP_NotificationControl.h
create mode 100644 src/asn/ngap/ASN_NGAP_NotifySourceNGRANNode.c
create mode 100644 src/asn/ngap/ASN_NGAP_NotifySourceNGRANNode.h
create mode 100644 src/asn/ngap/ASN_NGAP_NumberOfBroadcasts.c
create mode 100644 src/asn/ngap/ASN_NGAP_NumberOfBroadcasts.h
create mode 100644 src/asn/ngap/ASN_NGAP_NumberOfBroadcastsRequested.c
create mode 100644 src/asn/ngap/ASN_NGAP_NumberOfBroadcastsRequested.h
create mode 100644 src/asn/ngap/ASN_NGAP_NumberOfMeasurementReportingLevels.c
create mode 100644 src/asn/ngap/ASN_NGAP_NumberOfMeasurementReportingLevels.h
create mode 100644 src/asn/ngap/ASN_NGAP_OnboardingSupport.c
create mode 100644 src/asn/ngap/ASN_NGAP_OnboardingSupport.h
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadAction.c
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadAction.h
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStart.c
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStart.h
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStartNSSAIItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStartNSSAIItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStartNSSAIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStartNSSAIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStop.c
create mode 100644 src/asn/ngap/ASN_NGAP_OverloadStop.h
create mode 100644 src/asn/ngap/ASN_NGAP_PC5FlowBitRates.c
create mode 100644 src/asn/ngap/ASN_NGAP_PC5FlowBitRates.h
create mode 100644 src/asn/ngap/ASN_NGAP_PC5QoSFlowItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PC5QoSFlowItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PC5QoSFlowList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PC5QoSFlowList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PC5QoSParameters.c
create mode 100644 src/asn/ngap/ASN_NGAP_PC5QoSParameters.h
create mode 100644 src/asn/ngap/ASN_NGAP_PCIListForMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_PCIListForMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionAggregateMaximumBitRate.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionAggregateMaximumBitRate.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionID.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionID.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionPairID.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionPairID.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceAdmittedItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceAdmittedItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceAdmittedList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceAdmittedList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModCfm.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModCfm.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModCfm.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModCfm.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtFail.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtFail.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemHOAck.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemHOAck.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemPSReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemPSReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemSURes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemSURes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtFail.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtFail.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListHOAck.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListHOAck.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListPSReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListPSReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListSURes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListSURes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceHandoverItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceHandoverItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceHandoverList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceHandoverList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceInformationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceInformationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceInformationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceInformationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceItemCxtRelCpl.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceItemCxtRelCpl.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceItemCxtRelReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceItemCxtRelReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceItemHORqd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceItemHORqd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceListCxtRelCpl.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceListCxtRelCpl.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceListCxtRelReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceListCxtRelReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceListHORqd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceListHORqd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyConfirm.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyConfirm.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyConfirmTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyConfirmTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyIndicationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyIndicationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyIndicationUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyIndicationUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModCfm.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModCfm.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModInd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModInd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyItemModRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModCfm.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModCfm.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModInd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModInd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyListModRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotify.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotify.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyReleasedTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyReleasedTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceNotifyTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseCommand.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseCommand.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseCommandTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseCommandTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleaseResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemNot.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemNot.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSAck.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSAck.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSFail.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSFail.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemRelRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedItemRelRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListNot.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListNot.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListPSAck.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListPSAck.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListPSFail.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListPSFail.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListRelRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceReleasedListRelRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeItemRESReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeItemRESReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeItemRESRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeItemRESRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeListRESReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeListRESReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeListRESRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceResumeListRESRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemHOReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemHOReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemSUReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemSUReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemSURes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupItemSURes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListCxtReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListCxtReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListCxtRes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListCxtRes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListHOReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListHOReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListSUReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListSUReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListSURes.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupListSURes.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSuspendItemSUSReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSuspendItemSUSReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSuspendListSUSReq.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSuspendListSUSReq.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSwitchedItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSwitchedItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSwitchedList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceSwitchedList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseItemHOCmd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseItemHOCmd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseItemRelCmd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseItemRelCmd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseListHOCmd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseListHOCmd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseListRelCmd.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionResourceToReleaseListRelCmd.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionType.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionType.h
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionUsageReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_PDUSessionUsageReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_PEIPSassistanceInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_PEIPSassistanceInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNAreaBasedQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNAreaBasedQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNIdentity.c
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNIdentity.h
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNListforQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNListforQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNSupportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNSupportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNSupportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PLMNSupportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PNI-NPN-MobilityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_PNI-NPN-MobilityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_PWSCancelRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_PWSCancelRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_PWSCancelResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_PWSCancelResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_PWSFailedCellIDList.c
create mode 100644 src/asn/ngap/ASN_NGAP_PWSFailedCellIDList.h
create mode 100644 src/asn/ngap/ASN_NGAP_PWSFailureIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_PWSFailureIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_PWSRestartIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_PWSRestartIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_PacketDelayBudget.c
create mode 100644 src/asn/ngap/ASN_NGAP_PacketDelayBudget.h
create mode 100644 src/asn/ngap/ASN_NGAP_PacketErrorRate.c
create mode 100644 src/asn/ngap/ASN_NGAP_PacketErrorRate.h
create mode 100644 src/asn/ngap/ASN_NGAP_PacketLossRate.c
create mode 100644 src/asn/ngap/ASN_NGAP_PacketLossRate.h
create mode 100644 src/asn/ngap/ASN_NGAP_Paging.c
create mode 100644 src/asn/ngap/ASN_NGAP_Paging.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingAssisDataforCEcapabUE.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingAssisDataforCEcapabUE.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingAttemptCount.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingAttemptCount.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingAttemptInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingAttemptInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingCause.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingCause.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingCauseIndicationForVoiceService.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingCauseIndicationForVoiceService.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingDRX.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingDRX.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingOrigin.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingOrigin.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingPriority.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingPriority.h
create mode 100644 src/asn/ngap/ASN_NGAP_PagingProbabilityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_PagingProbabilityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestAcknowledge.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestAcknowledge.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestAcknowledgeTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestAcknowledgeTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestSetupFailedTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestSetupFailedTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestUnsuccessfulTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PathSwitchRequestUnsuccessfulTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PedestrianUE.c
create mode 100644 src/asn/ngap/ASN_NGAP_PedestrianUE.h
create mode 100644 src/asn/ngap/ASN_NGAP_PeriodicRegistrationUpdateTimer.c
create mode 100644 src/asn/ngap/ASN_NGAP_PeriodicRegistrationUpdateTimer.h
create mode 100644 src/asn/ngap/ASN_NGAP_PeriodicReportingIEs.c
create mode 100644 src/asn/ngap/ASN_NGAP_PeriodicReportingIEs.h
create mode 100644 src/asn/ngap/ASN_NGAP_Periodicity.c
create mode 100644 src/asn/ngap/ASN_NGAP_Periodicity.h
create mode 100644 src/asn/ngap/ASN_NGAP_PortNumber.c
create mode 100644 src/asn/ngap/ASN_NGAP_PortNumber.h
create mode 100644 src/asn/ngap/ASN_NGAP_Pre-emptionCapability.c
create mode 100644 src/asn/ngap/ASN_NGAP_Pre-emptionCapability.h
create mode 100644 src/asn/ngap/ASN_NGAP_Pre-emptionVulnerability.c
create mode 100644 src/asn/ngap/ASN_NGAP_Pre-emptionVulnerability.h
create mode 100644 src/asn/ngap/ASN_NGAP_Presence.c
create mode 100644 src/asn/ngap/ASN_NGAP_Presence.h
create mode 100644 src/asn/ngap/ASN_NGAP_PriorityLevelARP.c
create mode 100644 src/asn/ngap/ASN_NGAP_PriorityLevelARP.h
create mode 100644 src/asn/ngap/ASN_NGAP_PriorityLevelQos.c
create mode 100644 src/asn/ngap/ASN_NGAP_PriorityLevelQos.h
create mode 100644 src/asn/ngap/ASN_NGAP_PrivacyIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_PrivacyIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateIE-Container.c
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateIE-Container.h
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateIE-Field.c
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateIE-Field.h
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateIE-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateIE-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateMessage.c
create mode 100644 src/asn/ngap/ASN_NGAP_PrivateMessage.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProcedureCode.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProcedureCode.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProcedureStageChoice.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProcedureStageChoice.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolExtensionContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolExtensionContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolExtensionField.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolExtensionField.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolExtensionID.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolExtensionID.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-Container.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-Container.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ContainerList.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ContainerList.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ContainerPair.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ContainerPair.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ContainerPairList.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ContainerPairList.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-Field.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-Field.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-FieldPair.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-FieldPair.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-SingleContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_ProtocolIE-SingleContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_QMCConfigInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_QMCConfigInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_QMCDeactivation.c
create mode 100644 src/asn/ngap/ASN_NGAP_QMCDeactivation.h
create mode 100644 src/asn/ngap/ASN_NGAP_QoEReference.c
create mode 100644 src/asn/ngap/ASN_NGAP_QoEReference.h
create mode 100644 src/asn/ngap/ASN_NGAP_QoEReferenceList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QoEReferenceList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QoSFlowList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QoSFlowList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QoSFlowsUsageReport-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_QoSFlowsUsageReport-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_QoSFlowsUsageReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QoSFlowsUsageReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosCharacteristics.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosCharacteristics.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAcceptedItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAcceptedItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAcceptedList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAcceptedList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyResponseItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyResponseItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyResponseList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowAddOrModifyResponseList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowFeedbackItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowFeedbackItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowFeedbackList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowFeedbackList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowIdentifier.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowIdentifier.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowInformationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowInformationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowInformationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowInformationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowItemWithDataForwarding.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowItemWithDataForwarding.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowLevelQosParameters.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowLevelQosParameters.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowListWithCause.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowListWithCause.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowListWithDataForwarding.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowListWithDataForwarding.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowModifyConfirmItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowModifyConfirmItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowModifyConfirmList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowModifyConfirmList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowNotifyItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowNotifyItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowNotifyList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowNotifyList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowParametersItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowParametersItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowParametersList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowParametersList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowPerTNLInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowPerTNLInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowPerTNLInformationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowPerTNLInformationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowPerTNLInformationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowPerTNLInformationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowSetupRequestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowSetupRequestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowSetupRequestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowSetupRequestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowToBeForwardedItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowToBeForwardedItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowToBeForwardedList.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowToBeForwardedList.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowWithCauseItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosFlowWithCauseItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosMonitoringReportingFrequency.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosMonitoringReportingFrequency.h
create mode 100644 src/asn/ngap/ASN_NGAP_QosMonitoringRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_QosMonitoringRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_RAN-UE-NGAP-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_RAN-UE-NGAP-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANCPRelocationIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANCPRelocationIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANConfigurationUpdate.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANConfigurationUpdate.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANConfigurationUpdateAcknowledge.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANConfigurationUpdateAcknowledge.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANConfigurationUpdateFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANConfigurationUpdateFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANNodeName.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANNodeName.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANNodeNameUTF8String.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANNodeNameUTF8String.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANNodeNameVisibleString.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANNodeNameVisibleString.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANPagingPriority.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANPagingPriority.h
create mode 100644 src/asn/ngap/ASN_NGAP_RANStatusTransfer-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_RANStatusTransfer-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_RAT-Information.c
create mode 100644 src/asn/ngap/ASN_NGAP_RAT-Information.h
create mode 100644 src/asn/ngap/ASN_NGAP_RATRestrictionInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_RATRestrictionInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_RATRestrictions-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_RATRestrictions-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_RATRestrictions.c
create mode 100644 src/asn/ngap/ASN_NGAP_RATRestrictions.h
create mode 100644 src/asn/ngap/ASN_NGAP_RGLevelWirelineAccessCharacteristics.c
create mode 100644 src/asn/ngap/ASN_NGAP_RGLevelWirelineAccessCharacteristics.h
create mode 100644 src/asn/ngap/ASN_NGAP_RIMInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_RIMInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_RIMInformationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_RIMInformationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_RNC-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_RNC-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_RRCContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_RRCContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_RRCEstablishmentCause.c
create mode 100644 src/asn/ngap/ASN_NGAP_RRCEstablishmentCause.h
create mode 100644 src/asn/ngap/ASN_NGAP_RRCInactiveTransitionReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_RRCInactiveTransitionReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_RRCInactiveTransitionReportRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_RRCInactiveTransitionReportRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_RRCState.c
create mode 100644 src/asn/ngap/ASN_NGAP_RRCState.h
create mode 100644 src/asn/ngap/ASN_NGAP_RSN.c
create mode 100644 src/asn/ngap/ASN_NGAP_RSN.h
create mode 100644 src/asn/ngap/ASN_NGAP_Range.c
create mode 100644 src/asn/ngap/ASN_NGAP_Range.h
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedCellItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedCellItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedCellList.c
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedCellList.h
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedCellsForPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedCellsForPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedRANNodeItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedRANNodeItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedRANNodeList.c
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedRANNodeList.h
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedRANNodesForPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_RecommendedRANNodesForPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_RedCapIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_RedCapIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_RedirectionVoiceFallback.c
create mode 100644 src/asn/ngap/ASN_NGAP_RedirectionVoiceFallback.h
create mode 100644 src/asn/ngap/ASN_NGAP_RedundantPDUSessionInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_RedundantPDUSessionInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_RedundantQosFlowIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_RedundantQosFlowIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReflectiveQosAttribute.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReflectiveQosAttribute.h
create mode 100644 src/asn/ngap/ASN_NGAP_RejectedNSSAIinPLMN.c
create mode 100644 src/asn/ngap/ASN_NGAP_RejectedNSSAIinPLMN.h
create mode 100644 src/asn/ngap/ASN_NGAP_RejectedNSSAIinTA.c
create mode 100644 src/asn/ngap/ASN_NGAP_RejectedNSSAIinTA.h
create mode 100644 src/asn/ngap/ASN_NGAP_RelativeAMFCapacity.c
create mode 100644 src/asn/ngap/ASN_NGAP_RelativeAMFCapacity.h
create mode 100644 src/asn/ngap/ASN_NGAP_RepetitionPeriod.c
create mode 100644 src/asn/ngap/ASN_NGAP_RepetitionPeriod.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportAmountMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportAmountMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportArea.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportArea.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportCharacteristics.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportCharacteristics.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportIntervalMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportIntervalMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportType.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportType.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportingPeriodicity.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportingPeriodicity.h
create mode 100644 src/asn/ngap/ASN_NGAP_ReportingSystem.c
create mode 100644 src/asn/ngap/ASN_NGAP_ReportingSystem.h
create mode 100644 src/asn/ngap/ASN_NGAP_RerouteNASRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_RerouteNASRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_ResetAll.c
create mode 100644 src/asn/ngap/ASN_NGAP_ResetAll.h
create mode 100644 src/asn/ngap/ASN_NGAP_ResetType.c
create mode 100644 src/asn/ngap/ASN_NGAP_ResetType.h
create mode 100644 src/asn/ngap/ASN_NGAP_ResourceStatusReportingSystem.c
create mode 100644 src/asn/ngap/ASN_NGAP_ResourceStatusReportingSystem.h
create mode 100644 src/asn/ngap/ASN_NGAP_RetrieveUEInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_RetrieveUEInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_RoutingID.c
create mode 100644 src/asn/ngap/ASN_NGAP_RoutingID.h
create mode 100644 src/asn/ngap/ASN_NGAP_S-NSSAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_S-NSSAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_SCTP-TLAs.c
create mode 100644 src/asn/ngap/ASN_NGAP_SCTP-TLAs.h
create mode 100644 src/asn/ngap/ASN_NGAP_SD.c
create mode 100644 src/asn/ngap/ASN_NGAP_SD.h
create mode 100644 src/asn/ngap/ASN_NGAP_SNPN-MobilityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_SNPN-MobilityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_SONConfigurationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_SONConfigurationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformationReply.c
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformationReply.h
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformationReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformationReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_SONInformationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_SRVCCOperationPossible.c
create mode 100644 src/asn/ngap/ASN_NGAP_SRVCCOperationPossible.h
create mode 100644 src/asn/ngap/ASN_NGAP_SST.c
create mode 100644 src/asn/ngap/ASN_NGAP_SST.h
create mode 100644 src/asn/ngap/ASN_NGAP_ScheduledCommunicationTime.c
create mode 100644 src/asn/ngap/ASN_NGAP_ScheduledCommunicationTime.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecondaryRATDataUsageReport.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecondaryRATDataUsageReport.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecondaryRATDataUsageReportTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecondaryRATDataUsageReportTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecondaryRATUsageInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecondaryRATUsageInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityContext.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityContext.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityKey.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityKey.h
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityResult.c
create mode 100644 src/asn/ngap/ASN_NGAP_SecurityResult.h
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasConfig.c
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasConfig.h
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasConfigNameItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasConfigNameItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasConfigNameList.c
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasConfigNameList.h
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasurementConfiguration.c
create mode 100644 src/asn/ngap/ASN_NGAP_SensorMeasurementConfiguration.h
create mode 100644 src/asn/ngap/ASN_NGAP_SensorNameConfig.c
create mode 100644 src/asn/ngap/ASN_NGAP_SensorNameConfig.h
create mode 100644 src/asn/ngap/ASN_NGAP_SerialNumber.c
create mode 100644 src/asn/ngap/ASN_NGAP_SerialNumber.h
create mode 100644 src/asn/ngap/ASN_NGAP_ServedGUAMIItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_ServedGUAMIItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_ServedGUAMIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_ServedGUAMIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_ServiceAreaInformation-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_ServiceAreaInformation-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_ServiceAreaInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_ServiceAreaInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_ServiceType.c
create mode 100644 src/asn/ngap/ASN_NGAP_ServiceType.h
create mode 100644 src/asn/ngap/ASN_NGAP_SgNB-UE-X2AP-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_SgNB-UE-X2AP-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_SharedNGU-MulticastTNLInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_SharedNGU-MulticastTNLInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_SliceOverloadItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_SliceOverloadItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_SliceOverloadList.c
create mode 100644 src/asn/ngap/ASN_NGAP_SliceOverloadList.h
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportListQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportListQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportQMC-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_SliceSupportQMC-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_SourceNGRANNode-ToTargetNGRANNode-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_SourceNGRANNode-ToTargetNGRANNode-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_SourceNodeID.c
create mode 100644 src/asn/ngap/ASN_NGAP_SourceNodeID.h
create mode 100644 src/asn/ngap/ASN_NGAP_SourceOfUEActivityBehaviourInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_SourceOfUEActivityBehaviourInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_SourceRANNodeID.c
create mode 100644 src/asn/ngap/ASN_NGAP_SourceRANNodeID.h
create mode 100644 src/asn/ngap/ASN_NGAP_SourceToTarget-AMFInformationReroute.c
create mode 100644 src/asn/ngap/ASN_NGAP_SourceToTarget-AMFInformationReroute.h
create mode 100644 src/asn/ngap/ASN_NGAP_SourceToTarget-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_SourceToTarget-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_SuccessfulHandoverReport-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_SuccessfulHandoverReport-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_SuccessfulHandoverReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_SuccessfulHandoverReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_SuccessfulOutcome.c
create mode 100644 src/asn/ngap/ASN_NGAP_SuccessfulOutcome.h
create mode 100644 src/asn/ngap/ASN_NGAP_SupportedTAItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_SupportedTAItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_SupportedTAList.c
create mode 100644 src/asn/ngap/ASN_NGAP_SupportedTAList.h
create mode 100644 src/asn/ngap/ASN_NGAP_SurvivalTime.c
create mode 100644 src/asn/ngap/ASN_NGAP_SurvivalTime.h
create mode 100644 src/asn/ngap/ASN_NGAP_Suspend-Request-Indication.c
create mode 100644 src/asn/ngap/ASN_NGAP_Suspend-Request-Indication.h
create mode 100644 src/asn/ngap/ASN_NGAP_Suspend-Response-Indication.c
create mode 100644 src/asn/ngap/ASN_NGAP_Suspend-Response-Indication.h
create mode 100644 src/asn/ngap/ASN_NGAP_SuspendIndicator.c
create mode 100644 src/asn/ngap/ASN_NGAP_SuspendIndicator.h
create mode 100644 src/asn/ngap/ASN_NGAP_TABasedMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_TABasedMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_TABasedQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_TABasedQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAC.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAC.h
create mode 100644 src/asn/ngap/ASN_NGAP_TACListInNRNTN.c
create mode 100644 src/asn/ngap/ASN_NGAP_TACListInNRNTN.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBasedMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBasedMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBasedQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBasedQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastEUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastEUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastNR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastNR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIBroadcastNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledEUTRA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledEUTRA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledNR-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledNR-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAICancelledNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForInactive.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForInactive.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForInactiveItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForInactiveItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForPagingItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForPagingItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForRestart.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForRestart.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForWarning.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListForWarning.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListforMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListforMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListforQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAIListforQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAINSAGSupportItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAINSAGSupportItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAINSAGSupportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAINSAGSupportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAListforMDT.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAListforMDT.h
create mode 100644 src/asn/ngap/ASN_NGAP_TAListforQMC.c
create mode 100644 src/asn/ngap/ASN_NGAP_TAListforQMC.h
create mode 100644 src/asn/ngap/ASN_NGAP_TMGI.c
create mode 100644 src/asn/ngap/ASN_NGAP_TMGI.h
create mode 100644 src/asn/ngap/ASN_NGAP_TNAP-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TNAP-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TNGF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TNGF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAddressWeightFactor.c
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAddressWeightFactor.h
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAssociationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAssociationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAssociationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAssociationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAssociationUsage.c
create mode 100644 src/asn/ngap/ASN_NGAP_TNLAssociationUsage.h
create mode 100644 src/asn/ngap/ASN_NGAP_TSCAssistanceInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_TSCAssistanceInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_TSCTrafficCharacteristics.c
create mode 100644 src/asn/ngap/ASN_NGAP_TSCTrafficCharacteristics.h
create mode 100644 src/asn/ngap/ASN_NGAP_TWAP-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TWAP-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TWIF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TWIF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetHomeENB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetHomeENB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNSSAI-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNSSAI-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNSSAI.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNSSAI.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNSSAIInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetNSSAIInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRANNodeID-RIM.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRANNodeID-RIM.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRANNodeID-SON.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRANNodeID-SON.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRANNodeID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRANNodeID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRNC-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetRNC-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargetToSource-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargetToSource-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargeteNB-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargeteNB-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_TargettoSource-Failure-TransparentContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_TargettoSource-Failure-TransparentContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_Threshold-RSRP.c
create mode 100644 src/asn/ngap/ASN_NGAP_Threshold-RSRP.h
create mode 100644 src/asn/ngap/ASN_NGAP_Threshold-RSRQ.c
create mode 100644 src/asn/ngap/ASN_NGAP_Threshold-RSRQ.h
create mode 100644 src/asn/ngap/ASN_NGAP_Threshold-SINR.c
create mode 100644 src/asn/ngap/ASN_NGAP_Threshold-SINR.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimeStamp.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimeStamp.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimeSyncAssistanceInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimeSyncAssistanceInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimeToTrigger.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimeToTrigger.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimeToWait.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimeToWait.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimeUEStayedInCell.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimeUEStayedInCell.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimeUEStayedInCellEnhancedGranularity.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimeUEStayedInCellEnhancedGranularity.h
create mode 100644 src/asn/ngap/ASN_NGAP_TimerApproachForGUAMIRemoval.c
create mode 100644 src/asn/ngap/ASN_NGAP_TimerApproachForGUAMIRemoval.h
create mode 100644 src/asn/ngap/ASN_NGAP_TooearlyIntersystemHO.c
create mode 100644 src/asn/ngap/ASN_NGAP_TooearlyIntersystemHO.h
create mode 100644 src/asn/ngap/ASN_NGAP_TraceActivation.c
create mode 100644 src/asn/ngap/ASN_NGAP_TraceActivation.h
create mode 100644 src/asn/ngap/ASN_NGAP_TraceDepth.c
create mode 100644 src/asn/ngap/ASN_NGAP_TraceDepth.h
create mode 100644 src/asn/ngap/ASN_NGAP_TraceFailureIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_TraceFailureIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_TraceStart.c
create mode 100644 src/asn/ngap/ASN_NGAP_TraceStart.h
create mode 100644 src/asn/ngap/ASN_NGAP_TrafficLoadReductionIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_TrafficLoadReductionIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_TransportLayerAddress.c
create mode 100644 src/asn/ngap/ASN_NGAP_TransportLayerAddress.h
create mode 100644 src/asn/ngap/ASN_NGAP_TriggeringMessage.c
create mode 100644 src/asn/ngap/ASN_NGAP_TriggeringMessage.h
create mode 100644 src/asn/ngap/ASN_NGAP_TypeOfError.c
create mode 100644 src/asn/ngap/ASN_NGAP_TypeOfError.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-DifferentiationInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-DifferentiationInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-NGAP-ID-pair.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-NGAP-ID-pair.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-NGAP-IDs.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-NGAP-IDs.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-PagingItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-PagingItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-PagingList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-PagingList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-UP-CIoT-Support.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-UP-CIoT-Support.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-associatedLogicalNG-connectionItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-associatedLogicalNG-connectionItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UE-associatedLogicalNG-connectionList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UE-associatedLogicalNG-connectionList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEAggregateMaximumBitRate.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEAggregateMaximumBitRate.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEAppLayerMeasConfigInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEAppLayerMeasConfigInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEAppLayerMeasInfoItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEAppLayerMeasInfoItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEAppLayerMeasInfoList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEAppLayerMeasInfoList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UECapabilityInfoRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UECapabilityInfoRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextModificationFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextModificationFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextModificationRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextModificationRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextModificationResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextModificationResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextReleaseCommand.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextReleaseCommand.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextReleaseComplete.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextReleaseComplete.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextReleaseRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextReleaseRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeResponseTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextResumeResponseTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendFailure.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendFailure.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendRequestTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendRequestTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEContextSuspendResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEHistoryInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEHistoryInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEHistoryInformationFromTheUE.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEHistoryInformationFromTheUE.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEIdentityIndexValue.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEIdentityIndexValue.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEInformationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEInformationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEPagingIdentity.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEPagingIdentity.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEPresence.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEPresence.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEPresenceInAreaOfInterestItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEPresenceInAreaOfInterestItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UEPresenceInAreaOfInterestList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UEPresenceInAreaOfInterestList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERLFReportContainer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERLFReportContainer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapability.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapability.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityCheckRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityCheckRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityCheckResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityCheckResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPaging.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPaging.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPagingOfEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPagingOfEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPagingOfNB-IoT.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPagingOfNB-IoT.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPagingOfNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityForPagingOfNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityID.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityID.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityIDMappingRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityIDMappingRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityIDMappingResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityIDMappingResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityInfoIndication.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERadioCapabilityInfoIndication.h
create mode 100644 src/asn/ngap/ASN_NGAP_UERetentionInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_UERetentionInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_UESecurityCapabilities.c
create mode 100644 src/asn/ngap/ASN_NGAP_UESecurityCapabilities.h
create mode 100644 src/asn/ngap/ASN_NGAP_UESliceMaximumBitRateItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UESliceMaximumBitRateItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UESliceMaximumBitRateList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UESliceMaximumBitRateList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UETNLABindingReleaseRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_UETNLABindingReleaseRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_UL-CP-SecurityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_UL-CP-SecurityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NAS-Count.c
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NAS-Count.h
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NAS-MAC.c
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NAS-MAC.h
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NGU-UP-TNLModifyItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NGU-UP-TNLModifyItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NGU-UP-TNLModifyList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UL-NGU-UP-TNLModifyList.h
create mode 100644 src/asn/ngap/ASN_NGAP_ULForwarding.c
create mode 100644 src/asn/ngap/ASN_NGAP_ULForwarding.h
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationPairItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationPairItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationPairList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UPTransportLayerInformationPairList.h
create mode 100644 src/asn/ngap/ASN_NGAP_URI-address.c
create mode 100644 src/asn/ngap/ASN_NGAP_URI-address.h
create mode 100644 src/asn/ngap/ASN_NGAP_UnavailableGUAMIItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_UnavailableGUAMIItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_UnavailableGUAMIList.c
create mode 100644 src/asn/ngap/ASN_NGAP_UnavailableGUAMIList.h
create mode 100644 src/asn/ngap/ASN_NGAP_UnsuccessfulOutcome.c
create mode 100644 src/asn/ngap/ASN_NGAP_UnsuccessfulOutcome.h
create mode 100644 src/asn/ngap/ASN_NGAP_UpdateFeedback.c
create mode 100644 src/asn/ngap/ASN_NGAP_UpdateFeedback.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkNASTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkNASTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkNonUEAssociatedNRPPaTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkNonUEAssociatedNRPPaTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRANConfigurationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRANConfigurationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRANEarlyStatusTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRANEarlyStatusTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRANStatusTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRANStatusTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRIMInformationTransfer.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkRIMInformationTransfer.h
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkUEAssociatedNRPPaTransport.c
create mode 100644 src/asn/ngap/ASN_NGAP_UplinkUEAssociatedNRPPaTransport.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationEUTRA.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationEUTRA.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationN3IWF.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationN3IWF.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationNR.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationNR.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationTNGF.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationTNGF.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationTWIF.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationTWIF.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationW-AGF.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserLocationInformationW-AGF.h
create mode 100644 src/asn/ngap/ASN_NGAP_UserPlaneSecurityInformation.c
create mode 100644 src/asn/ngap/ASN_NGAP_UserPlaneSecurityInformation.h
create mode 100644 src/asn/ngap/ASN_NGAP_VehicleUE.c
create mode 100644 src/asn/ngap/ASN_NGAP_VehicleUE.h
create mode 100644 src/asn/ngap/ASN_NGAP_VolumeTimedReport-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_VolumeTimedReport-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_VolumeTimedReportList.c
create mode 100644 src/asn/ngap/ASN_NGAP_VolumeTimedReportList.h
create mode 100644 src/asn/ngap/ASN_NGAP_W-AGF-ID.c
create mode 100644 src/asn/ngap/ASN_NGAP_W-AGF-ID.h
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasConfig.c
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasConfig.h
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasConfigNameItem.c
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasConfigNameItem.h
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasConfigNameList.c
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasConfigNameList.h
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasurementConfiguration.c
create mode 100644 src/asn/ngap/ASN_NGAP_WLANMeasurementConfiguration.h
create mode 100644 src/asn/ngap/ASN_NGAP_WLANName.c
create mode 100644 src/asn/ngap/ASN_NGAP_WLANName.h
create mode 100644 src/asn/ngap/ASN_NGAP_WUS-Assistance-Information.c
create mode 100644 src/asn/ngap/ASN_NGAP_WUS-Assistance-Information.h
create mode 100644 src/asn/ngap/ASN_NGAP_WarningAreaCoordinates.c
create mode 100644 src/asn/ngap/ASN_NGAP_WarningAreaCoordinates.h
create mode 100644 src/asn/ngap/ASN_NGAP_WarningAreaList.c
create mode 100644 src/asn/ngap/ASN_NGAP_WarningAreaList.h
create mode 100644 src/asn/ngap/ASN_NGAP_WarningMessageContents.c
create mode 100644 src/asn/ngap/ASN_NGAP_WarningMessageContents.h
create mode 100644 src/asn/ngap/ASN_NGAP_WarningSecurityInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_WarningSecurityInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_WarningType.c
create mode 100644 src/asn/ngap/ASN_NGAP_WarningType.h
create mode 100644 src/asn/ngap/ASN_NGAP_WriteReplaceWarningRequest.c
create mode 100644 src/asn/ngap/ASN_NGAP_WriteReplaceWarningRequest.h
create mode 100644 src/asn/ngap/ASN_NGAP_WriteReplaceWarningResponse.c
create mode 100644 src/asn/ngap/ASN_NGAP_WriteReplaceWarningResponse.h
create mode 100644 src/asn/ngap/ASN_NGAP_XnExtTLA-Item.c
create mode 100644 src/asn/ngap/ASN_NGAP_XnExtTLA-Item.h
create mode 100644 src/asn/ngap/ASN_NGAP_XnExtTLAs.c
create mode 100644 src/asn/ngap/ASN_NGAP_XnExtTLAs.h
create mode 100644 src/asn/ngap/ASN_NGAP_XnGTP-TLAs.c
create mode 100644 src/asn/ngap/ASN_NGAP_XnGTP-TLAs.h
create mode 100644 src/asn/ngap/ASN_NGAP_XnTLAs.c
create mode 100644 src/asn/ngap/ASN_NGAP_XnTLAs.h
create mode 100644 src/asn/ngap/ASN_NGAP_XnTNLConfigurationInfo.c
create mode 100644 src/asn/ngap/ASN_NGAP_XnTNLConfigurationInfo.h
create mode 100644 src/asn/ngap/ASN_NGAP_asn_constant.h
create mode 100644 src/asn/ngap/CMakeLists.txt
create mode 100644 src/asn/rrc/ASN_RRC_AMF-Identifier.c
create mode 100644 src/asn/rrc/ASN_RRC_AMF-Identifier.h
create mode 100644 src/asn/rrc/ASN_RRC_ARFCN-ValueEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_ARFCN-ValueEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_ARFCN-ValueNR.c
create mode 100644 src/asn/rrc/ASN_RRC_ARFCN-ValueNR.h
create mode 100644 src/asn/rrc/ASN_RRC_AS-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_AS-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_AS-Context.c
create mode 100644 src/asn/rrc/ASN_RRC_AS-Context.h
create mode 100644 src/asn/rrc/ASN_RRC_AccessStratumRelease.c
create mode 100644 src/asn/rrc/ASN_RRC_AccessStratumRelease.h
create mode 100644 src/asn/rrc/ASN_RRC_AdditionalSpectrumEmission.c
create mode 100644 src/asn/rrc/ASN_RRC_AdditionalSpectrumEmission.h
create mode 100644 src/asn/rrc/ASN_RRC_AffectedCarrierFreqCombEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_AffectedCarrierFreqCombEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_AffectedCarrierFreqCombInfoMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_AffectedCarrierFreqCombInfoMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_AffectedCarrierFreqCombNR.c
create mode 100644 src/asn/rrc/ASN_RRC_AffectedCarrierFreqCombNR.h
create mode 100644 src/asn/rrc/ASN_RRC_AggregatedBandwidth.c
create mode 100644 src/asn/rrc/ASN_RRC_AggregatedBandwidth.h
create mode 100644 src/asn/rrc/ASN_RRC_Alpha.c
create mode 100644 src/asn/rrc/ASN_RRC_Alpha.h
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-BCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-BCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-BCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-BCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-DL-SCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-DL-SCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-DL-SCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_BCCH-DL-SCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_BFR-CSIRS-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_BFR-CSIRS-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_BFR-SSB-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_BFR-SSB-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_BSR-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_BSR-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-Downlink.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-Downlink.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-DownlinkCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-DownlinkCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-DownlinkDedicated.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-DownlinkDedicated.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-Uplink.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-Uplink.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-UplinkCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-UplinkCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP-UplinkDedicated.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP-UplinkDedicated.h
create mode 100644 src/asn/rrc/ASN_RRC_BWP.c
create mode 100644 src/asn/rrc/ASN_RRC_BWP.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination-v1550.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination-v1550.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombination.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationInfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationInfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationInfoSN.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationInfoSN.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList-v1550.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList-v1550.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList.c
create mode 100644 src/asn/rrc/ASN_RRC_BandCombinationList.h
create mode 100644 src/asn/rrc/ASN_RRC_BandEntryIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_BandEntryIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_BandNR.c
create mode 100644 src/asn/rrc/ASN_RRC_BandNR.h
create mode 100644 src/asn/rrc/ASN_RRC_BandParameters-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_BandParameters-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_BandParameters.c
create mode 100644 src/asn/rrc/ASN_RRC_BandParameters.h
create mode 100644 src/asn/rrc/ASN_RRC_BeamFailureRecoveryConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_BeamFailureRecoveryConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_BeamManagementSSB-CSI-RS.c
create mode 100644 src/asn/rrc/ASN_RRC_BeamManagementSSB-CSI-RS.h
create mode 100644 src/asn/rrc/ASN_RRC_BetaOffsets.c
create mode 100644 src/asn/rrc/ASN_RRC_BetaOffsets.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-BandwidthClassEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-BandwidthClassEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-BandwidthClassNR.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-BandwidthClassNR.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersEUTRA-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersEUTRA-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR-v1550.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR-v1550.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNR.h
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_CA-ParametersNRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_CFRA-CSIRS-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_CFRA-CSIRS-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_CFRA-SSB-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_CFRA-SSB-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_CFRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CFRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config-v1540-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config-v1540-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config-v1560-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config-v1560-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1540-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1540-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1560-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo-v1560-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-ConfigInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_CG-UCI-OnPUSCH.c
create mode 100644 src/asn/rrc/ASN_RRC_CG-UCI-OnPUSCH.h
create mode 100644 src/asn/rrc/ASN_RRC_CGI-InfoEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CGI-InfoEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CGI-InfoNR.c
create mode 100644 src/asn/rrc/ASN_RRC_CGI-InfoNR.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-AperiodicTriggerState.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-AperiodicTriggerState.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-AperiodicTriggerStateList.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-AperiodicTriggerStateList.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-AssociatedReportConfigInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-AssociatedReportConfigInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-FrequencyOccupation.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-FrequencyOccupation.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-ResourceId.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-ResourceId.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-ResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-ResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-ResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-IM-ResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-MeasConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-MeasConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-CellMobility.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-CellMobility.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ForTracking.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ForTracking.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-IM-ReceptionForFeedback.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-IM-ReceptionForFeedback.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-Index.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-Index.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ProcFrameworkForSRS.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ProcFrameworkForSRS.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-Resource-Mobility.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-Resource-Mobility.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ResourceConfigMobility.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ResourceConfigMobility.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ResourceMapping.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-RS-ResourceMapping.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportConfigId.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportConfigId.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportFramework.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportFramework.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportPeriodicityAndOffset.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ReportPeriodicityAndOffset.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ResourceConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ResourceConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ResourceConfigId.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ResourceConfigId.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ResourcePeriodicityAndOffset.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-ResourcePeriodicityAndOffset.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SSB-ResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SemiPersistentOnPUSCH-TriggerState.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SemiPersistentOnPUSCH-TriggerState.h
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SemiPersistentOnPUSCH-TriggerStateList.c
create mode 100644 src/asn/rrc/ASN_RRC_CSI-SemiPersistentOnPUSCH-TriggerStateList.h
create mode 100644 src/asn/rrc/ASN_RRC_CandidateServingFreqListEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CandidateServingFreqListEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CandidateServingFreqListNR.c
create mode 100644 src/asn/rrc/ASN_RRC_CandidateServingFreqListNR.h
create mode 100644 src/asn/rrc/ASN_RRC_CarrierFreqEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CarrierFreqEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CarrierFreqListEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_CarrierFreqListEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_CarrierInfoNR.c
create mode 100644 src/asn/rrc/ASN_RRC_CarrierInfoNR.h
create mode 100644 src/asn/rrc/ASN_RRC_CellAccessRelatedInfo-EUTRA-5GC.c
create mode 100644 src/asn/rrc/ASN_RRC_CellAccessRelatedInfo-EUTRA-5GC.h
create mode 100644 src/asn/rrc/ASN_RRC_CellAccessRelatedInfo-EUTRA-EPC.c
create mode 100644 src/asn/rrc/ASN_RRC_CellAccessRelatedInfo-EUTRA-EPC.h
create mode 100644 src/asn/rrc/ASN_RRC_CellAccessRelatedInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_CellAccessRelatedInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_CellGroupConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_CellGroupConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_CellGroupId.c
create mode 100644 src/asn/rrc/ASN_RRC_CellGroupId.h
create mode 100644 src/asn/rrc/ASN_RRC_CellIdentity-EUTRA-5GC.c
create mode 100644 src/asn/rrc/ASN_RRC_CellIdentity-EUTRA-5GC.h
create mode 100644 src/asn/rrc/ASN_RRC_CellIdentity.c
create mode 100644 src/asn/rrc/ASN_RRC_CellIdentity.h
create mode 100644 src/asn/rrc/ASN_RRC_CellReselectionPriorities.c
create mode 100644 src/asn/rrc/ASN_RRC_CellReselectionPriorities.h
create mode 100644 src/asn/rrc/ASN_RRC_CellReselectionPriority.c
create mode 100644 src/asn/rrc/ASN_RRC_CellReselectionPriority.h
create mode 100644 src/asn/rrc/ASN_RRC_CellReselectionSubPriority.c
create mode 100644 src/asn/rrc/ASN_RRC_CellReselectionSubPriority.h
create mode 100644 src/asn/rrc/ASN_RRC_CellsToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_CellsToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_CellsToAddModList.c
create mode 100644 src/asn/rrc/ASN_RRC_CellsToAddModList.h
create mode 100644 src/asn/rrc/ASN_RRC_CellsTriggeredList.c
create mode 100644 src/asn/rrc/ASN_RRC_CellsTriggeredList.h
create mode 100644 src/asn/rrc/ASN_RRC_CipheringAlgorithm.c
create mode 100644 src/asn/rrc/ASN_RRC_CipheringAlgorithm.h
create mode 100644 src/asn/rrc/ASN_RRC_CodebookConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_CodebookConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_CodebookParameters.c
create mode 100644 src/asn/rrc/ASN_RRC_CodebookParameters.h
create mode 100644 src/asn/rrc/ASN_RRC_ConfigRestrictInfoSCG.c
create mode 100644 src/asn/rrc/ASN_RRC_ConfigRestrictInfoSCG.h
create mode 100644 src/asn/rrc/ASN_RRC_ConfigRestrictModReqSCG.c
create mode 100644 src/asn/rrc/ASN_RRC_ConfigRestrictModReqSCG.h
create mode 100644 src/asn/rrc/ASN_RRC_ConfiguredGrantConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_ConfiguredGrantConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_ConnEstFailureControl.c
create mode 100644 src/asn/rrc/ASN_RRC_ConnEstFailureControl.h
create mode 100644 src/asn/rrc/ASN_RRC_ControlResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_ControlResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_ControlResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_ControlResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_ControlResourceSetZero.c
create mode 100644 src/asn/rrc/ASN_RRC_ControlResourceSetZero.h
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheck-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheck-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheck.c
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheck.h
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheckResponse-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheckResponse-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheckResponse.c
create mode 100644 src/asn/rrc/ASN_RRC_CounterCheckResponse.h
create mode 100644 src/asn/rrc/ASN_RRC_CrossCarrierSchedulingConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_CrossCarrierSchedulingConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_DL-AM-RLC.c
create mode 100644 src/asn/rrc/ASN_RRC_DL-AM-RLC.h
create mode 100644 src/asn/rrc/ASN_RRC_DL-CCCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_DL-CCCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_DL-CCCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_DL-CCCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_DL-DCCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_DL-DCCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_DL-DCCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_DL-DCCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_DL-UM-RLC.c
create mode 100644 src/asn/rrc/ASN_RRC_DL-UM-RLC.h
create mode 100644 src/asn/rrc/ASN_RRC_DLInformationTransfer-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_DLInformationTransfer-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_DLInformationTransfer.c
create mode 100644 src/asn/rrc/ASN_RRC_DLInformationTransfer.h
create mode 100644 src/asn/rrc/ASN_RRC_DMRS-DownlinkConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_DMRS-DownlinkConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_DMRS-UplinkConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_DMRS-UplinkConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountInfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountInfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountMSB-Info.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountMSB-Info.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountMSB-InfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-CountMSB-InfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-Identity.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-Identity.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-ToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-ToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-ToAddModList.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-ToAddModList.h
create mode 100644 src/asn/rrc/ASN_RRC_DRB-ToReleaseList.c
create mode 100644 src/asn/rrc/ASN_RRC_DRB-ToReleaseList.h
create mode 100644 src/asn/rrc/ASN_RRC_DRX-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_DRX-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_DRX-Info.c
create mode 100644 src/asn/rrc/ASN_RRC_DRX-Info.h
create mode 100644 src/asn/rrc/ASN_RRC_DataInactivityTimer.c
create mode 100644 src/asn/rrc/ASN_RRC_DataInactivityTimer.h
create mode 100644 src/asn/rrc/ASN_RRC_DedicatedNAS-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_DedicatedNAS-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_DelayBudgetReport.c
create mode 100644 src/asn/rrc/ASN_RRC_DelayBudgetReport.h
create mode 100644 src/asn/rrc/ASN_RRC_DownlinkConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_DownlinkConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_DownlinkConfigCommonSIB.c
create mode 100644 src/asn/rrc/ASN_RRC_DownlinkConfigCommonSIB.h
create mode 100644 src/asn/rrc/ASN_RRC_DownlinkPreemption.c
create mode 100644 src/asn/rrc/ASN_RRC_DownlinkPreemption.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyA.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyA.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyB.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyB.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyC.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyC.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyD.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyD.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyE.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyE.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyF.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyF.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyG.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyG.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyH.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyH.h
create mode 100644 src/asn/rrc/ASN_RRC_DummyI.c
create mode 100644 src/asn/rrc/ASN_RRC_DummyI.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-AllowedMeasBandwidth.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-AllowedMeasBandwidth.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-BlackCell.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-BlackCell.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-Cell.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-Cell.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-CellIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-CellIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-CellIndexList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-CellIndexList.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-FreqBlackCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-FreqBlackCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-FreqNeighCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MBSFN-SubframeConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MBSFN-SubframeConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MBSFN-SubframeConfigList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MBSFN-SubframeConfigList.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-MultiBandInfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxList.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxValue.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-NS-PmaxValue.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-ParametersCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-ParametersCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-ParametersXDD-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-ParametersXDD-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-PhysCellId.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-PhysCellId.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-PhysCellIdRange.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-PhysCellIdRange.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-PresenceAntennaPort1.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-PresenceAntennaPort1.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-Q-OffsetRange.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-Q-OffsetRange.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-RSTD-Info.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-RSTD-Info.h
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-RSTD-InfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_EUTRA-RSTD-InfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_EstablishmentCause.c
create mode 100644 src/asn/rrc/ASN_RRC_EstablishmentCause.h
create mode 100644 src/asn/rrc/ASN_RRC_EventTriggerConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_EventTriggerConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_EventTriggerConfigInterRAT.c
create mode 100644 src/asn/rrc/ASN_RRC_EventTriggerConfigInterRAT.h
create mode 100644 src/asn/rrc/ASN_RRC_FR-Info.c
create mode 100644 src/asn/rrc/ASN_RRC_FR-Info.h
create mode 100644 src/asn/rrc/ASN_RRC_FR-InfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_FR-InfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_FailureInfoRLC-Bearer.c
create mode 100644 src/asn/rrc/ASN_RRC_FailureInfoRLC-Bearer.h
create mode 100644 src/asn/rrc/ASN_RRC_FailureInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_FailureInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_FailureInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_FailureInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_FailureReportSCG-EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_FailureReportSCG-EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_FailureReportSCG.c
create mode 100644 src/asn/rrc/ASN_RRC_FailureReportSCG.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSet.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSet.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetCombination.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetCombination.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetCombinationId.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetCombinationId.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlink-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlink-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlink.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlink.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlinkId.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlinkId.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlinkPerCC-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlinkPerCC-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlinkPerCC.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetDownlinkPerCC.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetEUTRA-DownlinkId.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetEUTRA-DownlinkId.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetEUTRA-UplinkId.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetEUTRA-UplinkId.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetEntryIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetEntryIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplink-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplink-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplink.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplink.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkId.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkId.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetUplinkPerCC.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSets.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSets.h
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetsPerBand.c
create mode 100644 src/asn/rrc/ASN_RRC_FeatureSetsPerBand.h
create mode 100644 src/asn/rrc/ASN_RRC_FilterCoefficient.c
create mode 100644 src/asn/rrc/ASN_RRC_FilterCoefficient.h
create mode 100644 src/asn/rrc/ASN_RRC_FilterConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_FilterConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandIndicatorEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandIndicatorEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandIndicatorNR.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandIndicatorNR.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandInformationEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandInformationEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandInformationNR.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandInformationNR.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandList.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqBandList.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityListEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityListEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityListNR.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityListNR.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityNR.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqPriorityNR.h
create mode 100644 src/asn/rrc/ASN_RRC_FreqSeparationClass.c
create mode 100644 src/asn/rrc/ASN_RRC_FreqSeparationClass.h
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoDL-SIB.c
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoDL-SIB.h
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoDL.c
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoDL.h
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoUL-SIB.c
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoUL-SIB.h
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoUL.c
create mode 100644 src/asn/rrc/ASN_RRC_FrequencyInfoUL.h
create mode 100644 src/asn/rrc/ASN_RRC_GapConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_GapConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_GeneralParametersMRDC-XDD-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_GeneralParametersMRDC-XDD-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_HandoverCommand-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_HandoverCommand-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_HandoverCommand.c
create mode 100644 src/asn/rrc/ASN_RRC_HandoverCommand.h
create mode 100644 src/asn/rrc/ASN_RRC_HandoverPreparationInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_HandoverPreparationInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_HandoverPreparationInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_HandoverPreparationInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_Hysteresis.c
create mode 100644 src/asn/rrc/ASN_RRC_Hysteresis.h
create mode 100644 src/asn/rrc/ASN_RRC_I-RNTI-Value.c
create mode 100644 src/asn/rrc/ASN_RRC_I-RNTI-Value.h
create mode 100644 src/asn/rrc/ASN_RRC_IMS-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_IMS-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_IMS-ParametersCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_IMS-ParametersCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_IMS-ParametersFRX-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_IMS-ParametersFRX-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_INT-ConfigurationPerServingCell.c
create mode 100644 src/asn/rrc/ASN_RRC_INT-ConfigurationPerServingCell.h
create mode 100644 src/asn/rrc/ASN_RRC_InitialUE-Identity.c
create mode 100644 src/asn/rrc/ASN_RRC_InitialUE-Identity.h
create mode 100644 src/asn/rrc/ASN_RRC_IntegrityProtAlgorithm.c
create mode 100644 src/asn/rrc/ASN_RRC_IntegrityProtAlgorithm.h
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqBlackCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqBlackCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqCarrierFreqInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqCarrierFreqInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqCarrierFreqList.c
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqCarrierFreqList.h
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqNeighCellInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqNeighCellInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqNeighCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_InterFreqNeighCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_InterRAT-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_InterRAT-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_IntraFreqBlackCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_IntraFreqBlackCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_IntraFreqNeighCellInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_IntraFreqNeighCellInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_IntraFreqNeighCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_IntraFreqNeighCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_LocationMeasurementIndication-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_LocationMeasurementIndication-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_LocationMeasurementIndication.c
create mode 100644 src/asn/rrc/ASN_RRC_LocationMeasurementIndication.h
create mode 100644 src/asn/rrc/ASN_RRC_LocationMeasurementInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_LocationMeasurementInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_LogicalChannelConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_LogicalChannelConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_LogicalChannelIdentity.c
create mode 100644 src/asn/rrc/ASN_RRC_LogicalChannelIdentity.h
create mode 100644 src/asn/rrc/ASN_RRC_MAC-CellGroupConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_MAC-CellGroupConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_MAC-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_MAC-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_MAC-ParametersCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_MAC-ParametersCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_MAC-ParametersXDD-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_MAC-ParametersXDD-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_MCC-MNC-Digit.c
create mode 100644 src/asn/rrc/ASN_RRC_MCC-MNC-Digit.h
create mode 100644 src/asn/rrc/ASN_RRC_MCC.c
create mode 100644 src/asn/rrc/ASN_RRC_MCC.h
create mode 100644 src/asn/rrc/ASN_RRC_MIB.c
create mode 100644 src/asn/rrc/ASN_RRC_MIB.h
create mode 100644 src/asn/rrc/ASN_RRC_MIMO-LayersDL.c
create mode 100644 src/asn/rrc/ASN_RRC_MIMO-LayersDL.h
create mode 100644 src/asn/rrc/ASN_RRC_MIMO-LayersUL.c
create mode 100644 src/asn/rrc/ASN_RRC_MIMO-LayersUL.h
create mode 100644 src/asn/rrc/ASN_RRC_MIMO-ParametersPerBand.c
create mode 100644 src/asn/rrc/ASN_RRC_MIMO-ParametersPerBand.h
create mode 100644 src/asn/rrc/ASN_RRC_MNC.c
create mode 100644 src/asn/rrc/ASN_RRC_MNC.h
create mode 100644 src/asn/rrc/ASN_RRC_MRDC-AssistanceInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_MRDC-AssistanceInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_MRDC-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_MRDC-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_MRDC-SecondaryCellGroupConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_MRDC-SecondaryCellGroupConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_MasterKeyUpdate.c
create mode 100644 src/asn/rrc/ASN_RRC_MasterKeyUpdate.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParameters.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParameters.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersFRX-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersFRX-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-Common.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-Common.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-FRX-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-FRX-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-XDD-Diff-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-XDD-Diff-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-XDD-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-XDD-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersXDD-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasAndMobParametersXDD-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasConfigMN.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasConfigMN.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasConfigSN.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasConfigSN.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasGapConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasGapConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasGapSharingConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasGapSharingConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasGapSharingScheme.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasGapSharingScheme.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasId.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasId.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasIdToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasIdToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasIdToAddModList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasIdToAddModList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasIdToRemoveList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasIdToRemoveList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectId.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectId.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectNR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectNR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectToAddModList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectToAddModList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectToRemoveList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasObjectToRemoveList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasQuantityResults.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasQuantityResults.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasQuantityResultsEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasQuantityResultsEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasReportQuantity.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasReportQuantity.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResult2EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResult2EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResult2NR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResult2NR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultCellListSFTD-EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultCellListSFTD-EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultCellListSFTD-NR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultCellListSFTD-NR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultCellSFTD-NR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultCellSFTD-NR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultFreqList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultFreqList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultFreqListFailMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultFreqListFailMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultList2NR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultList2NR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultListEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultListEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultListNR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultListNR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultNR.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultNR.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultSCG-Failure.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultSCG-Failure.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultSFTD-EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultSFTD-EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServFreqListEUTRA-SCG.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServFreqListEUTRA-SCG.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServFreqListNR-SCG.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServFreqListNR-SCG.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServMO.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServMO.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServMOList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResultServMOList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasResults.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasResults.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasTiming.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasTiming.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasTimingList.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasTimingList.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasTriggerQuantity.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasTriggerQuantity.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasTriggerQuantityEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasTriggerQuantityEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasTriggerQuantityOffset.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasTriggerQuantityOffset.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementReport-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementReport-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementReport.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementReport.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementTimingConfiguration-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementTimingConfiguration-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementTimingConfiguration-v1550-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementTimingConfiguration-v1550-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementTimingConfiguration.c
create mode 100644 src/asn/rrc/ASN_RRC_MeasurementTimingConfiguration.h
create mode 100644 src/asn/rrc/ASN_RRC_MobilityFromNRCommand-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_MobilityFromNRCommand-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_MobilityFromNRCommand.c
create mode 100644 src/asn/rrc/ASN_RRC_MobilityFromNRCommand.h
create mode 100644 src/asn/rrc/ASN_RRC_MobilityStateParameters.c
create mode 100644 src/asn/rrc/ASN_RRC_MobilityStateParameters.h
create mode 100644 src/asn/rrc/ASN_RRC_ModulationOrder.c
create mode 100644 src/asn/rrc/ASN_RRC_ModulationOrder.h
create mode 100644 src/asn/rrc/ASN_RRC_MultiBandInfoListEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_MultiBandInfoListEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_MultiFrequencyBandListNR-SIB.c
create mode 100644 src/asn/rrc/ASN_RRC_MultiFrequencyBandListNR-SIB.h
create mode 100644 src/asn/rrc/ASN_RRC_MultiFrequencyBandListNR.c
create mode 100644 src/asn/rrc/ASN_RRC_MultiFrequencyBandListNR.h
create mode 100644 src/asn/rrc/ASN_RRC_NAICS-Capability-Entry.c
create mode 100644 src/asn/rrc/ASN_RRC_NAICS-Capability-Entry.h
create mode 100644 src/asn/rrc/ASN_RRC_NG-5G-S-TMSI.c
create mode 100644 src/asn/rrc/ASN_RRC_NG-5G-S-TMSI.h
create mode 100644 src/asn/rrc/ASN_RRC_NR-FreqInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_NR-FreqInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_NR-MultiBandInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_NR-MultiBandInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_NR-NS-PmaxList.c
create mode 100644 src/asn/rrc/ASN_RRC_NR-NS-PmaxList.h
create mode 100644 src/asn/rrc/ASN_RRC_NR-NS-PmaxValue.c
create mode 100644 src/asn/rrc/ASN_RRC_NR-NS-PmaxValue.h
create mode 100644 src/asn/rrc/ASN_RRC_NR-RS-Type.c
create mode 100644 src/asn/rrc/ASN_RRC_NR-RS-Type.h
create mode 100644 src/asn/rrc/ASN_RRC_NRDC-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_NRDC-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceId.c
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceId.h
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_NZP-CSI-RS-ResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_NextHopChainingCount.c
create mode 100644 src/asn/rrc/ASN_RRC_NextHopChainingCount.h
create mode 100644 src/asn/rrc/ASN_RRC_NumberOfCarriers.c
create mode 100644 src/asn/rrc/ASN_RRC_NumberOfCarriers.h
create mode 100644 src/asn/rrc/ASN_RRC_OtherConfig-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_OtherConfig-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_OtherConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_OtherConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_OverheatingAssistance.c
create mode 100644 src/asn/rrc/ASN_RRC_OverheatingAssistance.h
create mode 100644 src/asn/rrc/ASN_RRC_OverheatingAssistanceConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_OverheatingAssistanceConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_P-Max.c
create mode 100644 src/asn/rrc/ASN_RRC_P-Max.h
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUCCH-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUCCH-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUCCH.c
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUCCH.h
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSet.c
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSet.h
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_P0-PUSCH-AlphaSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_PCCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PCCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PCCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_PCCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_PCCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_PCCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_PCI-List.c
create mode 100644 src/asn/rrc/ASN_RRC_PCI-List.h
create mode 100644 src/asn/rrc/ASN_RRC_PCI-Range.c
create mode 100644 src/asn/rrc/ASN_RRC_PCI-Range.h
create mode 100644 src/asn/rrc/ASN_RRC_PCI-RangeElement.c
create mode 100644 src/asn/rrc/ASN_RRC_PCI-RangeElement.h
create mode 100644 src/asn/rrc/ASN_RRC_PCI-RangeIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_PCI-RangeIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_PCI-RangeIndexList.c
create mode 100644 src/asn/rrc/ASN_RRC_PCI-RangeIndexList.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-BlindDetection.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-BlindDetection.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-ConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-ConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-ConfigSIB1.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-ConfigSIB1.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-ServingCellConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCCH-ServingCellConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCP-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCP-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCP-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCP-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_PDCP-ParametersMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_PDCP-ParametersMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-CodeBlockGroupTransmission.c
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-CodeBlockGroupTransmission.h
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-ConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-ConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-ServingCellConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-ServingCellConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-TimeDomainResourceAllocation.c
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-TimeDomainResourceAllocation.h
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-TimeDomainResourceAllocationList.c
create mode 100644 src/asn/rrc/ASN_RRC_PDSCH-TimeDomainResourceAllocationList.h
create mode 100644 src/asn/rrc/ASN_RRC_PDU-SessionID.c
create mode 100644 src/asn/rrc/ASN_RRC_PDU-SessionID.h
create mode 100644 src/asn/rrc/ASN_RRC_PH-InfoMCG.c
create mode 100644 src/asn/rrc/ASN_RRC_PH-InfoMCG.h
create mode 100644 src/asn/rrc/ASN_RRC_PH-InfoSCG.c
create mode 100644 src/asn/rrc/ASN_RRC_PH-InfoSCG.h
create mode 100644 src/asn/rrc/ASN_RRC_PH-TypeListMCG.c
create mode 100644 src/asn/rrc/ASN_RRC_PH-TypeListMCG.h
create mode 100644 src/asn/rrc/ASN_RRC_PH-TypeListSCG.c
create mode 100644 src/asn/rrc/ASN_RRC_PH-TypeListSCG.h
create mode 100644 src/asn/rrc/ASN_RRC_PH-UplinkCarrierMCG.c
create mode 100644 src/asn/rrc/ASN_RRC_PH-UplinkCarrierMCG.h
create mode 100644 src/asn/rrc/ASN_RRC_PH-UplinkCarrierSCG.c
create mode 100644 src/asn/rrc/ASN_RRC_PH-UplinkCarrierSCG.h
create mode 100644 src/asn/rrc/ASN_RRC_PHR-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PHR-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-Identity-EUTRA-5GC.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-Identity-EUTRA-5GC.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-Identity.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-Identity.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityInfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityInfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityList-EUTRA-5GC.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityList-EUTRA-5GC.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityList-EUTRA-EPC.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-IdentityList-EUTRA-EPC.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCell.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCell.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCellList.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaCellList.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfigList.c
create mode 100644 src/asn/rrc/ASN_RRC_PLMN-RAN-AreaConfigList.h
create mode 100644 src/asn/rrc/ASN_RRC_PRACH-ResourceDedicatedBFR.c
create mode 100644 src/asn/rrc/ASN_RRC_PRACH-ResourceDedicatedBFR.h
create mode 100644 src/asn/rrc/ASN_RRC_PRB-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_PRB-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-DensityRecommendationDL.c
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-DensityRecommendationDL.h
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-DensityRecommendationUL.c
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-DensityRecommendationUL.h
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-DownlinkConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-DownlinkConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-UplinkConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PTRS-UplinkConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-CSI-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-CSI-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-FormatConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-FormatConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-MaxCodeRate.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-MaxCodeRate.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-PathlossReferenceRS-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-PathlossReferenceRS-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-PathlossReferenceRS.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-PathlossReferenceRS.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-PowerControl.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-PowerControl.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ResourceId.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ResourceId.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-ResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-SpatialRelationInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-SpatialRelationInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-SpatialRelationInfoId.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-SpatialRelationInfoId.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-TPC-CommandConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-TPC-CommandConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format0.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format0.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format1.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format1.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format2.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format2.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format3.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format3.h
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format4.c
create mode 100644 src/asn/rrc/ASN_RRC_PUCCH-format4.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-CodeBlockGroupTransmission.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-CodeBlockGroupTransmission.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-ConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-ConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-PathlossReferenceRS-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-PathlossReferenceRS-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-PathlossReferenceRS.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-PathlossReferenceRS.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-PowerControl.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-PowerControl.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-ServingCellConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-ServingCellConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-TPC-CommandConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-TPC-CommandConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-TimeDomainResourceAllocation.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-TimeDomainResourceAllocation.h
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-TimeDomainResourceAllocationList.c
create mode 100644 src/asn/rrc/ASN_RRC_PUSCH-TimeDomainResourceAllocationList.h
create mode 100644 src/asn/rrc/ASN_RRC_Paging.c
create mode 100644 src/asn/rrc/ASN_RRC_Paging.h
create mode 100644 src/asn/rrc/ASN_RRC_PagingCycle.c
create mode 100644 src/asn/rrc/ASN_RRC_PagingCycle.h
create mode 100644 src/asn/rrc/ASN_RRC_PagingRecord.c
create mode 100644 src/asn/rrc/ASN_RRC_PagingRecord.h
create mode 100644 src/asn/rrc/ASN_RRC_PagingRecordList.c
create mode 100644 src/asn/rrc/ASN_RRC_PagingRecordList.h
create mode 100644 src/asn/rrc/ASN_RRC_PagingUE-Identity.c
create mode 100644 src/asn/rrc/ASN_RRC_PagingUE-Identity.h
create mode 100644 src/asn/rrc/ASN_RRC_PeriodicRNAU-TimerValue.c
create mode 100644 src/asn/rrc/ASN_RRC_PeriodicRNAU-TimerValue.h
create mode 100644 src/asn/rrc/ASN_RRC_PeriodicalReportConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PeriodicalReportConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PeriodicalReportConfigInterRAT.c
create mode 100644 src/asn/rrc/ASN_RRC_PeriodicalReportConfigInterRAT.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersFR1.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersFR1.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersFR2.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersFR2.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersFRX-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersFRX-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersXDD-Diff.c
create mode 100644 src/asn/rrc/ASN_RRC_Phy-ParametersXDD-Diff.h
create mode 100644 src/asn/rrc/ASN_RRC_PhysCellId.c
create mode 100644 src/asn/rrc/ASN_RRC_PhysCellId.h
create mode 100644 src/asn/rrc/ASN_RRC_PhysicalCellGroupConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_PhysicalCellGroupConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_PollByte.c
create mode 100644 src/asn/rrc/ASN_RRC_PollByte.h
create mode 100644 src/asn/rrc/ASN_RRC_PollPDU.c
create mode 100644 src/asn/rrc/ASN_RRC_PollPDU.h
create mode 100644 src/asn/rrc/ASN_RRC_PortIndex2.c
create mode 100644 src/asn/rrc/ASN_RRC_PortIndex2.h
create mode 100644 src/asn/rrc/ASN_RRC_PortIndex4.c
create mode 100644 src/asn/rrc/ASN_RRC_PortIndex4.h
create mode 100644 src/asn/rrc/ASN_RRC_PortIndex8.c
create mode 100644 src/asn/rrc/ASN_RRC_PortIndex8.h
create mode 100644 src/asn/rrc/ASN_RRC_PortIndexFor8Ranks.c
create mode 100644 src/asn/rrc/ASN_RRC_PortIndexFor8Ranks.h
create mode 100644 src/asn/rrc/ASN_RRC_ProcessingParameters.c
create mode 100644 src/asn/rrc/ASN_RRC_ProcessingParameters.h
create mode 100644 src/asn/rrc/ASN_RRC_Q-OffsetRange.c
create mode 100644 src/asn/rrc/ASN_RRC_Q-OffsetRange.h
create mode 100644 src/asn/rrc/ASN_RRC_Q-OffsetRangeList.c
create mode 100644 src/asn/rrc/ASN_RRC_Q-OffsetRangeList.h
create mode 100644 src/asn/rrc/ASN_RRC_Q-QualMin.c
create mode 100644 src/asn/rrc/ASN_RRC_Q-QualMin.h
create mode 100644 src/asn/rrc/ASN_RRC_Q-RxLevMin.c
create mode 100644 src/asn/rrc/ASN_RRC_Q-RxLevMin.h
create mode 100644 src/asn/rrc/ASN_RRC_QCL-Info.c
create mode 100644 src/asn/rrc/ASN_RRC_QCL-Info.h
create mode 100644 src/asn/rrc/ASN_RRC_QFI.c
create mode 100644 src/asn/rrc/ASN_RRC_QFI.h
create mode 100644 src/asn/rrc/ASN_RRC_QuantityConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_QuantityConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_QuantityConfigNR.c
create mode 100644 src/asn/rrc/ASN_RRC_QuantityConfigNR.h
create mode 100644 src/asn/rrc/ASN_RRC_QuantityConfigRS.c
create mode 100644 src/asn/rrc/ASN_RRC_QuantityConfigRS.h
create mode 100644 src/asn/rrc/ASN_RRC_RA-Prioritization.c
create mode 100644 src/asn/rrc/ASN_RRC_RA-Prioritization.h
create mode 100644 src/asn/rrc/ASN_RRC_RACH-ConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_RACH-ConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_RACH-ConfigDedicated.c
create mode 100644 src/asn/rrc/ASN_RRC_RACH-ConfigDedicated.h
create mode 100644 src/asn/rrc/ASN_RRC_RACH-ConfigGeneric.c
create mode 100644 src/asn/rrc/ASN_RRC_RACH-ConfigGeneric.h
create mode 100644 src/asn/rrc/ASN_RRC_RAN-AreaCode.c
create mode 100644 src/asn/rrc/ASN_RRC_RAN-AreaCode.h
create mode 100644 src/asn/rrc/ASN_RRC_RAN-AreaConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_RAN-AreaConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_RAN-NotificationAreaInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_RAN-NotificationAreaInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_RAT-Type.c
create mode 100644 src/asn/rrc/ASN_RRC_RAT-Type.h
create mode 100644 src/asn/rrc/ASN_RRC_RF-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_RF-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_RF-ParametersMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_RF-ParametersMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_RLC-BearerConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_RLC-BearerConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_RLC-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_RLC-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_RLC-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_RLC-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_RLF-TimersAndConstants.c
create mode 100644 src/asn/rrc/ASN_RRC_RLF-TimersAndConstants.h
create mode 100644 src/asn/rrc/ASN_RRC_RNTI-Value.c
create mode 100644 src/asn/rrc/ASN_RRC_RNTI-Value.h
create mode 100644 src/asn/rrc/ASN_RRC_RRC-TransactionIdentifier.c
create mode 100644 src/asn/rrc/ASN_RRC_RRC-TransactionIdentifier.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-v1530-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-v1530-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-v1540-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-v1540-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-v1560-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration-v1560-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfiguration.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete-v1530-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete-v1530-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete-v1560-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete-v1560-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReconfigurationComplete.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishment-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishment-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishment.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishment.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentComplete-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentComplete-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentComplete.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentComplete.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentRequest-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentRequest-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentRequest.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReestablishmentRequest.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReject-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReject-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCReject.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCReject.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCRelease-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCRelease-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCRelease-v1540-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCRelease-v1540-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCRelease.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCRelease.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResume-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResume-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResume-v1560-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResume-v1560-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResume.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResume.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeComplete-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeComplete-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeComplete.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeComplete.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest1-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest1-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest1.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCResumeRequest1.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetup-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetup-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetup.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetup.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupComplete-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupComplete-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupComplete.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupComplete.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupRequest-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupRequest-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupRequest.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSetupRequest.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSystemInfoRequest-r15-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSystemInfoRequest-r15-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_RRCSystemInfoRequest.c
create mode 100644 src/asn/rrc/ASN_RRC_RRCSystemInfoRequest.h
create mode 100644 src/asn/rrc/ASN_RRC_RRM-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_RRM-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_RSRP-Range.c
create mode 100644 src/asn/rrc/ASN_RRC_RSRP-Range.h
create mode 100644 src/asn/rrc/ASN_RRC_RSRP-RangeEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_RSRP-RangeEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_RSRQ-Range.c
create mode 100644 src/asn/rrc/ASN_RRC_RSRQ-Range.h
create mode 100644 src/asn/rrc/ASN_RRC_RSRQ-RangeEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_RSRQ-RangeEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_RadioBearerConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_RadioBearerConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_RadioLinkMonitoringConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_RadioLinkMonitoringConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_RadioLinkMonitoringRS-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_RadioLinkMonitoringRS-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_RadioLinkMonitoringRS.c
create mode 100644 src/asn/rrc/ASN_RRC_RadioLinkMonitoringRS.h
create mode 100644 src/asn/rrc/ASN_RRC_RangeToBestCell.c
create mode 100644 src/asn/rrc/ASN_RRC_RangeToBestCell.h
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPattern.c
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPattern.h
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPatternGroup.c
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPatternGroup.h
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPatternId.c
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPatternId.h
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPatternLTE-CRS.c
create mode 100644 src/asn/rrc/ASN_RRC_RateMatchPatternLTE-CRS.h
create mode 100644 src/asn/rrc/ASN_RRC_ReconfigurationWithSync.c
create mode 100644 src/asn/rrc/ASN_RRC_ReconfigurationWithSync.h
create mode 100644 src/asn/rrc/ASN_RRC_RedirectedCarrierInfo-EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_RedirectedCarrierInfo-EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_RedirectedCarrierInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_RedirectedCarrierInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_ReducedAggregatedBandwidth.c
create mode 100644 src/asn/rrc/ASN_RRC_ReducedAggregatedBandwidth.h
create mode 100644 src/asn/rrc/ASN_RRC_ReestabNCellInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_ReestabNCellInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_ReestabNCellInfoList.c
create mode 100644 src/asn/rrc/ASN_RRC_ReestabNCellInfoList.h
create mode 100644 src/asn/rrc/ASN_RRC_ReestabUE-Identity.c
create mode 100644 src/asn/rrc/ASN_RRC_ReestabUE-Identity.h
create mode 100644 src/asn/rrc/ASN_RRC_ReestablishmentCause.c
create mode 100644 src/asn/rrc/ASN_RRC_ReestablishmentCause.h
create mode 100644 src/asn/rrc/ASN_RRC_ReestablishmentInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_ReestablishmentInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_ReferenceSignalConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_ReferenceSignalConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_RegisteredAMF.c
create mode 100644 src/asn/rrc/ASN_RRC_RegisteredAMF.h
create mode 100644 src/asn/rrc/ASN_RRC_RejectWaitTime.c
create mode 100644 src/asn/rrc/ASN_RRC_RejectWaitTime.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportCGI-EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportCGI-EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportCGI.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportCGI.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigId.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigId.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigInterRAT.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigInterRAT.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigNR.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigNR.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigToAddModList.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigToAddModList.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigToRemoveList.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportConfigToRemoveList.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportInterval.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportInterval.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportSFTD-EUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportSFTD-EUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_ReportSFTD-NR.c
create mode 100644 src/asn/rrc/ASN_RRC_ReportSFTD-NR.h
create mode 100644 src/asn/rrc/ASN_RRC_ReselectionThreshold.c
create mode 100644 src/asn/rrc/ASN_RRC_ReselectionThreshold.h
create mode 100644 src/asn/rrc/ASN_RRC_ReselectionThresholdQ.c
create mode 100644 src/asn/rrc/ASN_RRC_ReselectionThresholdQ.h
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerCSI-RS-Index.c
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerCSI-RS-Index.h
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerCSI-RS-IndexList.c
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerCSI-RS-IndexList.h
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerSSB-Index.c
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerSSB-Index.h
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerSSB-IndexList.c
create mode 100644 src/asn/rrc/ASN_RRC_ResultsPerSSB-IndexList.h
create mode 100644 src/asn/rrc/ASN_RRC_ResumeCause.c
create mode 100644 src/asn/rrc/ASN_RRC_ResumeCause.h
create mode 100644 src/asn/rrc/ASN_RRC_S-NSSAI.c
create mode 100644 src/asn/rrc/ASN_RRC_S-NSSAI.h
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformationEUTRA-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformationEUTRA-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformationEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_SCGFailureInformationEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_SCS-SpecificCarrier.c
create mode 100644 src/asn/rrc/ASN_RRC_SCS-SpecificCarrier.h
create mode 100644 src/asn/rrc/ASN_RRC_SCellConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SCellConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SCellIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_SCellIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_SDAP-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_SDAP-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_SDAP-Parameters.c
create mode 100644 src/asn/rrc/ASN_RRC_SDAP-Parameters.h
create mode 100644 src/asn/rrc/ASN_RRC_SI-RequestConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SI-RequestConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SI-RequestResources.c
create mode 100644 src/asn/rrc/ASN_RRC_SI-RequestResources.h
create mode 100644 src/asn/rrc/ASN_RRC_SI-SchedulingInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_SI-SchedulingInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB-Mapping.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB-Mapping.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB-TypeInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB-TypeInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB1.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB1.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB2.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB2.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB3.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB3.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB4.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB4.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB5.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB5.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB6.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB6.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB7.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB7.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB8.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB8.h
create mode 100644 src/asn/rrc/ASN_RRC_SIB9.c
create mode 100644 src/asn/rrc/ASN_RRC_SIB9.h
create mode 100644 src/asn/rrc/ASN_RRC_SINR-Range.c
create mode 100644 src/asn/rrc/ASN_RRC_SINR-Range.h
create mode 100644 src/asn/rrc/ASN_RRC_SINR-RangeEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_SINR-RangeEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_SK-Counter.c
create mode 100644 src/asn/rrc/ASN_RRC_SK-Counter.h
create mode 100644 src/asn/rrc/ASN_RRC_SN-FieldLengthAM.c
create mode 100644 src/asn/rrc/ASN_RRC_SN-FieldLengthAM.h
create mode 100644 src/asn/rrc/ASN_RRC_SN-FieldLengthUM.c
create mode 100644 src/asn/rrc/ASN_RRC_SN-FieldLengthUM.h
create mode 100644 src/asn/rrc/ASN_RRC_SPS-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_SPS-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_SRB-Identity.c
create mode 100644 src/asn/rrc/ASN_RRC_SRB-Identity.h
create mode 100644 src/asn/rrc/ASN_RRC_SRB-ToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_SRB-ToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_SRB-ToAddModList.c
create mode 100644 src/asn/rrc/ASN_RRC_SRB-ToAddModList.h
create mode 100644 src/asn/rrc/ASN_RRC_SRI-PUSCH-PowerControl.c
create mode 100644 src/asn/rrc/ASN_RRC_SRI-PUSCH-PowerControl.h
create mode 100644 src/asn/rrc/ASN_RRC_SRI-PUSCH-PowerControlId.c
create mode 100644 src/asn/rrc/ASN_RRC_SRI-PUSCH-PowerControlId.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-CC-SetIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-CC-SetIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-CarrierSwitching.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-CarrierSwitching.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-PeriodicityAndOffset.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-PeriodicityAndOffset.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-ResourceId.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-ResourceId.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-ResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-ResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-ResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-ResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-Resources.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-Resources.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-SpatialRelationInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-SpatialRelationInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-SwitchingTimeEUTRA.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-SwitchingTimeEUTRA.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-SwitchingTimeNR.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-SwitchingTimeNR.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-TPC-CommandConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-TPC-CommandConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SRS-TPC-PDCCH-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_SRS-TPC-PDCCH-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_SS-RSSI-Measurement.c
create mode 100644 src/asn/rrc/ASN_RRC_SS-RSSI-Measurement.h
create mode 100644 src/asn/rrc/ASN_RRC_SSB-ConfigMobility.c
create mode 100644 src/asn/rrc/ASN_RRC_SSB-ConfigMobility.h
create mode 100644 src/asn/rrc/ASN_RRC_SSB-Index.c
create mode 100644 src/asn/rrc/ASN_RRC_SSB-Index.h
create mode 100644 src/asn/rrc/ASN_RRC_SSB-MTC.c
create mode 100644 src/asn/rrc/ASN_RRC_SSB-MTC.h
create mode 100644 src/asn/rrc/ASN_RRC_SSB-MTC2.c
create mode 100644 src/asn/rrc/ASN_RRC_SSB-MTC2.h
create mode 100644 src/asn/rrc/ASN_RRC_SSB-ToMeasure.c
create mode 100644 src/asn/rrc/ASN_RRC_SSB-ToMeasure.h
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestId.c
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestId.h
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestResourceConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestResourceConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestResourceId.c
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestResourceId.h
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestToAddMod.c
create mode 100644 src/asn/rrc/ASN_RRC_SchedulingRequestToAddMod.h
create mode 100644 src/asn/rrc/ASN_RRC_ScramblingId.c
create mode 100644 src/asn/rrc/ASN_RRC_ScramblingId.h
create mode 100644 src/asn/rrc/ASN_RRC_SearchSpace.c
create mode 100644 src/asn/rrc/ASN_RRC_SearchSpace.h
create mode 100644 src/asn/rrc/ASN_RRC_SearchSpaceId.c
create mode 100644 src/asn/rrc/ASN_RRC_SearchSpaceId.h
create mode 100644 src/asn/rrc/ASN_RRC_SearchSpaceZero.c
create mode 100644 src/asn/rrc/ASN_RRC_SearchSpaceZero.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityAlgorithmConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityAlgorithmConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityConfigSMC.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityConfigSMC.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeCommand-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeCommand-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeCommand.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeCommand.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeComplete-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeComplete-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeComplete.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeComplete.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeFailure-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeFailure-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeFailure.c
create mode 100644 src/asn/rrc/ASN_RRC_SecurityModeFailure.h
create mode 100644 src/asn/rrc/ASN_RRC_ServCellIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_ServCellIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_ServingCellConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_ServingCellConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_ServingCellConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_ServingCellConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_ServingCellConfigCommonSIB.c
create mode 100644 src/asn/rrc/ASN_RRC_ServingCellConfigCommonSIB.h
create mode 100644 src/asn/rrc/ASN_RRC_SetupRelease.c
create mode 100644 src/asn/rrc/ASN_RRC_SetupRelease.h
create mode 100644 src/asn/rrc/ASN_RRC_ShortI-RNTI-Value.c
create mode 100644 src/asn/rrc/ASN_RRC_ShortI-RNTI-Value.h
create mode 100644 src/asn/rrc/ASN_RRC_ShortMAC-I.c
create mode 100644 src/asn/rrc/ASN_RRC_ShortMAC-I.h
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatCombination.c
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatCombination.h
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatCombinationId.c
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatCombinationId.h
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatCombinationsPerCell.c
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatCombinationsPerCell.h
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatIndicator.c
create mode 100644 src/asn/rrc/ASN_RRC_SlotFormatIndicator.h
create mode 100644 src/asn/rrc/ASN_RRC_SpCellConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SpCellConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SpatialRelations.c
create mode 100644 src/asn/rrc/ASN_RRC_SpatialRelations.h
create mode 100644 src/asn/rrc/ASN_RRC_SpeedStateScaleFactors.c
create mode 100644 src/asn/rrc/ASN_RRC_SpeedStateScaleFactors.h
create mode 100644 src/asn/rrc/ASN_RRC_SubcarrierSpacing.c
create mode 100644 src/asn/rrc/ASN_RRC_SubcarrierSpacing.h
create mode 100644 src/asn/rrc/ASN_RRC_SupportedBandwidth.c
create mode 100644 src/asn/rrc/ASN_RRC_SupportedBandwidth.h
create mode 100644 src/asn/rrc/ASN_RRC_SupportedCSI-RS-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_SupportedCSI-RS-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_SuspendConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_SuspendConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_SystemInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_SystemInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_SystemInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_SystemInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_T-PollRetransmit.c
create mode 100644 src/asn/rrc/ASN_RRC_T-PollRetransmit.h
create mode 100644 src/asn/rrc/ASN_RRC_T-Reassembly.c
create mode 100644 src/asn/rrc/ASN_RRC_T-Reassembly.h
create mode 100644 src/asn/rrc/ASN_RRC_T-Reselection.c
create mode 100644 src/asn/rrc/ASN_RRC_T-Reselection.h
create mode 100644 src/asn/rrc/ASN_RRC_T-StatusProhibit.c
create mode 100644 src/asn/rrc/ASN_RRC_T-StatusProhibit.h
create mode 100644 src/asn/rrc/ASN_RRC_TAG-Config.c
create mode 100644 src/asn/rrc/ASN_RRC_TAG-Config.h
create mode 100644 src/asn/rrc/ASN_RRC_TAG-Id.c
create mode 100644 src/asn/rrc/ASN_RRC_TAG-Id.h
create mode 100644 src/asn/rrc/ASN_RRC_TAG.c
create mode 100644 src/asn/rrc/ASN_RRC_TAG.h
create mode 100644 src/asn/rrc/ASN_RRC_TCI-State.c
create mode 100644 src/asn/rrc/ASN_RRC_TCI-State.h
create mode 100644 src/asn/rrc/ASN_RRC_TCI-StateId.c
create mode 100644 src/asn/rrc/ASN_RRC_TCI-StateId.h
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-ConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-ConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-ConfigDedicated.c
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-ConfigDedicated.h
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-Pattern.c
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-Pattern.h
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_TDD-UL-DL-SlotIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_ThresholdNR.c
create mode 100644 src/asn/rrc/ASN_RRC_ThresholdNR.h
create mode 100644 src/asn/rrc/ASN_RRC_TimeAlignmentTimer.c
create mode 100644 src/asn/rrc/ASN_RRC_TimeAlignmentTimer.h
create mode 100644 src/asn/rrc/ASN_RRC_TimeToTrigger.c
create mode 100644 src/asn/rrc/ASN_RRC_TimeToTrigger.h
create mode 100644 src/asn/rrc/ASN_RRC_TrackingAreaCode.c
create mode 100644 src/asn/rrc/ASN_RRC_TrackingAreaCode.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-AccessCategory1-SelectionAssistanceInfo.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-AccessCategory1-SelectionAssistanceInfo.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringInfoSet.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringInfoSet.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringInfoSetIndex.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringInfoSetIndex.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringInfoSetList.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringInfoSetList.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerCat.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerCat.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerCatList.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerCatList.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN-List.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN-List.h
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN.c
create mode 100644 src/asn/rrc/ASN_RRC_UAC-BarringPerPLMN.h
create mode 100644 src/asn/rrc/ASN_RRC_UCI-OnPUSCH.c
create mode 100644 src/asn/rrc/ASN_RRC_UCI-OnPUSCH.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-Container.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-Container.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-ContainerList.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-ContainerList.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-Request.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-Request.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-RequestList.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRAT-RequestList.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRequestFilterCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRequestFilterCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRequestFilterNR-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRequestFilterNR-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRequestFilterNR.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-CapabilityRequestFilterNR.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-Capability-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-Capability-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-Capability.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-Capability.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-CapabilityAddFRX-Mode.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-CapabilityAddFRX-Mode.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-CapabilityAddXDD-Mode-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-CapabilityAddXDD-Mode-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-CapabilityAddXDD-Mode.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-MRDC-CapabilityAddXDD-Mode.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1530.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1530.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1550.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1550.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1560.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability-v1560.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-Capability.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddFRX-Mode-v1540.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddFRX-Mode-v1540.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddFRX-Mode.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddFRX-Mode.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddXDD-Mode-v1530.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddXDD-Mode-v1530.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddXDD-Mode.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-NR-CapabilityAddXDD-Mode.h
create mode 100644 src/asn/rrc/ASN_RRC_UE-TimersAndConstants.c
create mode 100644 src/asn/rrc/ASN_RRC_UE-TimersAndConstants.h
create mode 100644 src/asn/rrc/ASN_RRC_UEAssistanceInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UEAssistanceInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UEAssistanceInformation-v1540-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UEAssistanceInformation-v1540-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UEAssistanceInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_UEAssistanceInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityEnquiry-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityEnquiry-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityEnquiry-v1560-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityEnquiry-v1560-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityEnquiry.c
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityEnquiry.h
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_UECapabilityInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_UERadioAccessCapabilityInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UERadioAccessCapabilityInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UERadioAccessCapabilityInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_UERadioAccessCapabilityInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_UERadioPagingInformation-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_UERadioPagingInformation-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_UERadioPagingInformation.c
create mode 100644 src/asn/rrc/ASN_RRC_UERadioPagingInformation.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-AM-RLC.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-AM-RLC.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH1-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH1-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH1-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-CCCH1-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-DCCH-Message.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-DCCH-Message.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-DCCH-MessageType.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-DCCH-MessageType.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-DataSplitThreshold.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-DataSplitThreshold.h
create mode 100644 src/asn/rrc/ASN_RRC_UL-UM-RLC.c
create mode 100644 src/asn/rrc/ASN_RRC_UL-UM-RLC.h
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransfer-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransfer-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransfer.c
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransfer.h
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransferMRDC-IEs.c
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransferMRDC-IEs.h
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransferMRDC.c
create mode 100644 src/asn/rrc/ASN_RRC_ULInformationTransferMRDC.h
create mode 100644 src/asn/rrc/ASN_RRC_UplinkConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_UplinkConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_UplinkConfigCommon.c
create mode 100644 src/asn/rrc/ASN_RRC_UplinkConfigCommon.h
create mode 100644 src/asn/rrc/ASN_RRC_UplinkConfigCommonSIB.c
create mode 100644 src/asn/rrc/ASN_RRC_UplinkConfigCommonSIB.h
create mode 100644 src/asn/rrc/ASN_RRC_UplinkTxDirectCurrentBWP.c
create mode 100644 src/asn/rrc/ASN_RRC_UplinkTxDirectCurrentBWP.h
create mode 100644 src/asn/rrc/ASN_RRC_UplinkTxDirectCurrentCell.c
create mode 100644 src/asn/rrc/ASN_RRC_UplinkTxDirectCurrentCell.h
create mode 100644 src/asn/rrc/ASN_RRC_UplinkTxDirectCurrentList.c
create mode 100644 src/asn/rrc/ASN_RRC_UplinkTxDirectCurrentList.h
create mode 100644 src/asn/rrc/ASN_RRC_VarMeasConfig.c
create mode 100644 src/asn/rrc/ASN_RRC_VarMeasConfig.h
create mode 100644 src/asn/rrc/ASN_RRC_VarMeasReport.c
create mode 100644 src/asn/rrc/ASN_RRC_VarMeasReport.h
create mode 100644 src/asn/rrc/ASN_RRC_VarMeasReportList.c
create mode 100644 src/asn/rrc/ASN_RRC_VarMeasReportList.h
create mode 100644 src/asn/rrc/ASN_RRC_VarPendingRNA-Update.c
create mode 100644 src/asn/rrc/ASN_RRC_VarPendingRNA-Update.h
create mode 100644 src/asn/rrc/ASN_RRC_VarResumeMAC-Input.c
create mode 100644 src/asn/rrc/ASN_RRC_VarResumeMAC-Input.h
create mode 100644 src/asn/rrc/ASN_RRC_VarShortMAC-Input.c
create mode 100644 src/asn/rrc/ASN_RRC_VarShortMAC-Input.h
create mode 100644 src/asn/rrc/ASN_RRC_VictimSystemType.c
create mode 100644 src/asn/rrc/ASN_RRC_VictimSystemType.h
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-Resource.c
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-Resource.h
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceId.c
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceId.h
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSet.c
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSet.h
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSetId.c
create mode 100644 src/asn/rrc/ASN_RRC_ZP-CSI-RS-ResourceSetId.h
create mode 100644 src/asn/rrc/ASN_RRC_asn_constant.h
create mode 100644 src/asn/rrc/CMakeLists.txt
create mode 100644 src/binder.cpp
create mode 100644 src/cli.cpp
create mode 100644 src/ext/CMakeLists.txt
create mode 100644 src/ext/compact25519/c25519/README.md
create mode 100644 src/ext/compact25519/c25519/c25519.c
create mode 100644 src/ext/compact25519/c25519/c25519.h
create mode 100644 src/ext/compact25519/c25519/ed25519.c
create mode 100644 src/ext/compact25519/c25519/ed25519.h
create mode 100644 src/ext/compact25519/c25519/edsign.c
create mode 100644 src/ext/compact25519/c25519/edsign.h
create mode 100644 src/ext/compact25519/c25519/f25519.c
create mode 100644 src/ext/compact25519/c25519/f25519.h
create mode 100644 src/ext/compact25519/c25519/fprime.c
create mode 100644 src/ext/compact25519/c25519/fprime.h
create mode 100644 src/ext/compact25519/c25519/sha512.c
create mode 100644 src/ext/compact25519/c25519/sha512.h
create mode 100644 src/ext/compact25519/compact_wipe.c
create mode 100644 src/ext/compact25519/compact_wipe.h
create mode 100644 src/ext/compact25519/compact_x25519.c
create mode 100644 src/ext/compact25519/compact_x25519.h
create mode 100644 src/ext/compact25519/compact_x25519.hpp
create mode 100644 src/ext/crypt-ext/aes.c
create mode 100644 src/ext/crypt-ext/aes.h
create mode 100644 src/ext/crypt-ext/aes.hpp
create mode 100644 src/ext/crypt-ext/apicheck.h
create mode 100644 src/ext/crypt-ext/cmac.c
create mode 100644 src/ext/crypt-ext/cmac.hpp
create mode 100644 src/ext/crypt-ext/hmac-sha256.c
create mode 100644 src/ext/crypt-ext/hmac-sha256.h
create mode 100644 src/ext/crypt-ext/milenage.c
create mode 100644 src/ext/crypt-ext/milenage.h
create mode 100644 src/ext/crypt-ext/milenage.hpp
create mode 100644 src/ext/crypt-ext/rotate-bits.h
create mode 100644 src/ext/crypt-ext/sha256.c
create mode 100644 src/ext/crypt-ext/sha256.h
create mode 100644 src/ext/crypt-ext/x963kdf.c
create mode 100644 src/ext/crypt-ext/x963kdf.h
create mode 100644 src/ext/spdlog/async.h
create mode 100644 src/ext/spdlog/async_logger-inl.h
create mode 100644 src/ext/spdlog/async_logger.h
create mode 100644 src/ext/spdlog/cfg/argv.h
create mode 100644 src/ext/spdlog/cfg/env.h
create mode 100644 src/ext/spdlog/cfg/helpers-inl.h
create mode 100644 src/ext/spdlog/cfg/helpers.h
create mode 100644 src/ext/spdlog/common-inl.h
create mode 100644 src/ext/spdlog/common.h
create mode 100644 src/ext/spdlog/details/backtracer-inl.h
create mode 100644 src/ext/spdlog/details/backtracer.h
create mode 100644 src/ext/spdlog/details/circular_q.h
create mode 100644 src/ext/spdlog/details/console_globals.h
create mode 100644 src/ext/spdlog/details/file_helper-inl.h
create mode 100644 src/ext/spdlog/details/file_helper.h
create mode 100644 src/ext/spdlog/details/fmt_helper.h
create mode 100644 src/ext/spdlog/details/log_msg-inl.h
create mode 100644 src/ext/spdlog/details/log_msg.h
create mode 100644 src/ext/spdlog/details/log_msg_buffer-inl.h
create mode 100644 src/ext/spdlog/details/log_msg_buffer.h
create mode 100644 src/ext/spdlog/details/mpmc_blocking_q.h
create mode 100644 src/ext/spdlog/details/null_mutex.h
create mode 100644 src/ext/spdlog/details/os-inl.h
create mode 100644 src/ext/spdlog/details/os.h
create mode 100644 src/ext/spdlog/details/periodic_worker-inl.h
create mode 100644 src/ext/spdlog/details/periodic_worker.h
create mode 100644 src/ext/spdlog/details/registry-inl.h
create mode 100644 src/ext/spdlog/details/registry.h
create mode 100644 src/ext/spdlog/details/synchronous_factory.h
create mode 100644 src/ext/spdlog/details/tcp_client-windows.h
create mode 100644 src/ext/spdlog/details/tcp_client.h
create mode 100644 src/ext/spdlog/details/thread_pool-inl.h
create mode 100644 src/ext/spdlog/details/thread_pool.h
create mode 100644 src/ext/spdlog/details/windows_include.h
create mode 100644 src/ext/spdlog/fmt/bin_to_hex.h
create mode 100644 src/ext/spdlog/fmt/bundled/LICENSE.rst
create mode 100644 src/ext/spdlog/fmt/bundled/chrono.h
create mode 100644 src/ext/spdlog/fmt/bundled/color.h
create mode 100644 src/ext/spdlog/fmt/bundled/compile.h
create mode 100644 src/ext/spdlog/fmt/bundled/core.h
create mode 100644 src/ext/spdlog/fmt/bundled/format-inl.h
create mode 100644 src/ext/spdlog/fmt/bundled/format.h
create mode 100644 src/ext/spdlog/fmt/bundled/locale.h
create mode 100644 src/ext/spdlog/fmt/bundled/os.h
create mode 100644 src/ext/spdlog/fmt/bundled/ostream.h
create mode 100644 src/ext/spdlog/fmt/bundled/posix.h
create mode 100644 src/ext/spdlog/fmt/bundled/printf.h
create mode 100644 src/ext/spdlog/fmt/bundled/ranges.h
create mode 100644 src/ext/spdlog/fmt/chrono.h
create mode 100644 src/ext/spdlog/fmt/fmt.h
create mode 100644 src/ext/spdlog/fmt/ostr.h
create mode 100644 src/ext/spdlog/formatter.h
create mode 100644 src/ext/spdlog/fwd.h
create mode 100644 src/ext/spdlog/logger-inl.h
create mode 100644 src/ext/spdlog/logger.h
create mode 100644 src/ext/spdlog/pattern_formatter-inl.h
create mode 100644 src/ext/spdlog/pattern_formatter.h
create mode 100644 src/ext/spdlog/sinks/ansicolor_sink-inl.h
create mode 100644 src/ext/spdlog/sinks/ansicolor_sink.h
create mode 100644 src/ext/spdlog/sinks/base_sink-inl.h
create mode 100644 src/ext/spdlog/sinks/base_sink.h
create mode 100644 src/ext/spdlog/sinks/basic_file_sink-inl.h
create mode 100644 src/ext/spdlog/sinks/basic_file_sink.h
create mode 100644 src/ext/spdlog/sinks/daily_file_sink.h
create mode 100644 src/ext/spdlog/sinks/dist_sink.h
create mode 100644 src/ext/spdlog/sinks/dup_filter_sink.h
create mode 100644 src/ext/spdlog/sinks/msvc_sink.h
create mode 100644 src/ext/spdlog/sinks/null_sink.h
create mode 100644 src/ext/spdlog/sinks/ostream_sink.h
create mode 100644 src/ext/spdlog/sinks/ringbuffer_sink.h
create mode 100644 src/ext/spdlog/sinks/rotating_file_sink-inl.h
create mode 100644 src/ext/spdlog/sinks/rotating_file_sink.h
create mode 100644 src/ext/spdlog/sinks/sink-inl.h
create mode 100644 src/ext/spdlog/sinks/sink.h
create mode 100644 src/ext/spdlog/sinks/stdout_color_sinks-inl.h
create mode 100644 src/ext/spdlog/sinks/stdout_color_sinks.h
create mode 100644 src/ext/spdlog/sinks/stdout_sinks-inl.h
create mode 100644 src/ext/spdlog/sinks/stdout_sinks.h
create mode 100644 src/ext/spdlog/sinks/syslog_sink.h
create mode 100644 src/ext/spdlog/sinks/systemd_sink.h
create mode 100644 src/ext/spdlog/sinks/tcp_sink.h
create mode 100644 src/ext/spdlog/sinks/win_eventlog_sink.h
create mode 100644 src/ext/spdlog/sinks/wincolor_sink-inl.h
create mode 100644 src/ext/spdlog/sinks/wincolor_sink.h
create mode 100644 src/ext/spdlog/spdlog-inl.h
create mode 100644 src/ext/spdlog/spdlog.h
create mode 100644 src/ext/spdlog/stopwatch.h
create mode 100644 src/ext/spdlog/tweakme.h
create mode 100644 src/ext/spdlog/version.h
create mode 100644 src/ext/yaml-cpp/anchor.h
create mode 100644 src/ext/yaml-cpp/binary.cpp
create mode 100644 src/ext/yaml-cpp/binary.h
create mode 100644 src/ext/yaml-cpp/collectionstack.h
create mode 100644 src/ext/yaml-cpp/contrib/anchordict.h
create mode 100644 src/ext/yaml-cpp/contrib/graphbuilder.cpp
create mode 100644 src/ext/yaml-cpp/contrib/graphbuilder.h
create mode 100644 src/ext/yaml-cpp/contrib/graphbuilderadapter.cpp
create mode 100644 src/ext/yaml-cpp/contrib/graphbuilderadapter.h
create mode 100644 src/ext/yaml-cpp/contrib/yaml-cpp.natvis
create mode 100644 src/ext/yaml-cpp/contrib/yaml-cpp.natvis.md
create mode 100644 src/ext/yaml-cpp/convert.cpp
create mode 100644 src/ext/yaml-cpp/depthguard.cpp
create mode 100644 src/ext/yaml-cpp/depthguard.h
create mode 100644 src/ext/yaml-cpp/directives.cpp
create mode 100644 src/ext/yaml-cpp/directives.h
create mode 100644 src/ext/yaml-cpp/dll.h
create mode 100644 src/ext/yaml-cpp/emit.cpp
create mode 100644 src/ext/yaml-cpp/emitfromevents.cpp
create mode 100644 src/ext/yaml-cpp/emitfromevents.h
create mode 100644 src/ext/yaml-cpp/emitter.cpp
create mode 100644 src/ext/yaml-cpp/emitter.h
create mode 100644 src/ext/yaml-cpp/emitterdef.h
create mode 100644 src/ext/yaml-cpp/emittermanip.h
create mode 100644 src/ext/yaml-cpp/emitterstate.cpp
create mode 100644 src/ext/yaml-cpp/emitterstate.h
create mode 100644 src/ext/yaml-cpp/emitterstyle.h
create mode 100644 src/ext/yaml-cpp/emitterutils.cpp
create mode 100644 src/ext/yaml-cpp/emitterutils.h
create mode 100644 src/ext/yaml-cpp/eventhandler.h
create mode 100644 src/ext/yaml-cpp/exceptions.cpp
create mode 100644 src/ext/yaml-cpp/exceptions.h
create mode 100644 src/ext/yaml-cpp/exp.cpp
create mode 100644 src/ext/yaml-cpp/exp.h
create mode 100644 src/ext/yaml-cpp/indentation.h
create mode 100644 src/ext/yaml-cpp/mark.h
create mode 100644 src/ext/yaml-cpp/memory.cpp
create mode 100644 src/ext/yaml-cpp/node.cpp
create mode 100644 src/ext/yaml-cpp/node/convert.h
create mode 100644 src/ext/yaml-cpp/node/detail/impl.h
create mode 100644 src/ext/yaml-cpp/node/detail/iterator.h
create mode 100644 src/ext/yaml-cpp/node/detail/iterator_fwd.h
create mode 100644 src/ext/yaml-cpp/node/detail/memory.h
create mode 100644 src/ext/yaml-cpp/node/detail/node.h
create mode 100644 src/ext/yaml-cpp/node/detail/node_data.h
create mode 100644 src/ext/yaml-cpp/node/detail/node_iterator.h
create mode 100644 src/ext/yaml-cpp/node/detail/node_ref.h
create mode 100644 src/ext/yaml-cpp/node/emit.h
create mode 100644 src/ext/yaml-cpp/node/impl.h
create mode 100644 src/ext/yaml-cpp/node/iterator.h
create mode 100644 src/ext/yaml-cpp/node/node.h
create mode 100644 src/ext/yaml-cpp/node/parse.h
create mode 100644 src/ext/yaml-cpp/node/ptr.h
create mode 100644 src/ext/yaml-cpp/node/type.h
create mode 100644 src/ext/yaml-cpp/node_data.cpp
create mode 100644 src/ext/yaml-cpp/nodebuilder.cpp
create mode 100644 src/ext/yaml-cpp/nodebuilder.h
create mode 100644 src/ext/yaml-cpp/nodeevents.cpp
create mode 100644 src/ext/yaml-cpp/nodeevents.h
create mode 100644 src/ext/yaml-cpp/noexcept.h
create mode 100644 src/ext/yaml-cpp/null.cpp
create mode 100644 src/ext/yaml-cpp/null.h
create mode 100644 src/ext/yaml-cpp/ostream_wrapper.cpp
create mode 100644 src/ext/yaml-cpp/ostream_wrapper.h
create mode 100644 src/ext/yaml-cpp/parse.cpp
create mode 100644 src/ext/yaml-cpp/parser.cpp
create mode 100644 src/ext/yaml-cpp/parser.h
create mode 100644 src/ext/yaml-cpp/ptr_vector.h
create mode 100644 src/ext/yaml-cpp/regex_yaml.cpp
create mode 100644 src/ext/yaml-cpp/regex_yaml.h
create mode 100644 src/ext/yaml-cpp/regeximpl.h
create mode 100644 src/ext/yaml-cpp/scanner.cpp
create mode 100644 src/ext/yaml-cpp/scanner.h
create mode 100644 src/ext/yaml-cpp/scanscalar.cpp
create mode 100644 src/ext/yaml-cpp/scanscalar.h
create mode 100644 src/ext/yaml-cpp/scantag.cpp
create mode 100644 src/ext/yaml-cpp/scantag.h
create mode 100644 src/ext/yaml-cpp/scantoken.cpp
create mode 100644 src/ext/yaml-cpp/setting.h
create mode 100644 src/ext/yaml-cpp/simplekey.cpp
create mode 100644 src/ext/yaml-cpp/singledocparser.cpp
create mode 100644 src/ext/yaml-cpp/singledocparser.h
create mode 100644 src/ext/yaml-cpp/stlemitter.h
create mode 100644 src/ext/yaml-cpp/stream.cpp
create mode 100644 src/ext/yaml-cpp/stream.h
create mode 100644 src/ext/yaml-cpp/streamcharsource.h
create mode 100644 src/ext/yaml-cpp/stringsource.h
create mode 100644 src/ext/yaml-cpp/tag.cpp
create mode 100644 src/ext/yaml-cpp/tag.h
create mode 100644 src/ext/yaml-cpp/token.h
create mode 100644 src/ext/yaml-cpp/traits.h
create mode 100644 src/ext/yaml-cpp/yaml.h
create mode 100644 src/gnb.cpp
create mode 100644 src/gnb/CMakeLists.txt
create mode 100644 src/gnb/app/cmd_handler.cpp
create mode 100644 src/gnb/app/cmd_handler.hpp
create mode 100644 src/gnb/app/task.cpp
create mode 100644 src/gnb/app/task.hpp
create mode 100644 src/gnb/gnb.cpp
create mode 100644 src/gnb/gnb.hpp
create mode 100644 src/gnb/gtp/proto.cpp
create mode 100644 src/gnb/gtp/proto.hpp
create mode 100644 src/gnb/gtp/task.cpp
create mode 100644 src/gnb/gtp/task.hpp
create mode 100644 src/gnb/gtp/utils.cpp
create mode 100644 src/gnb/gtp/utils.hpp
create mode 100644 src/gnb/ngap/context.cpp
create mode 100644 src/gnb/ngap/encode.cpp
create mode 100644 src/gnb/ngap/encode.hpp
create mode 100644 src/gnb/ngap/interface.cpp
create mode 100644 src/gnb/ngap/management.cpp
create mode 100644 src/gnb/ngap/nas.cpp
create mode 100644 src/gnb/ngap/nnsf.cpp
create mode 100644 src/gnb/ngap/radio.cpp
create mode 100644 src/gnb/ngap/session.cpp
create mode 100644 src/gnb/ngap/task.cpp
create mode 100644 src/gnb/ngap/task.hpp
create mode 100644 src/gnb/ngap/transport.cpp
create mode 100644 src/gnb/ngap/utils.cpp
create mode 100644 src/gnb/ngap/utils.hpp
create mode 100644 src/gnb/nts.cpp
create mode 100644 src/gnb/nts.hpp
create mode 100644 src/gnb/rls/ctl_task.cpp
create mode 100644 src/gnb/rls/ctl_task.hpp
create mode 100644 src/gnb/rls/task.cpp
create mode 100644 src/gnb/rls/task.hpp
create mode 100644 src/gnb/rls/udp_task.cpp
create mode 100644 src/gnb/rls/udp_task.hpp
create mode 100644 src/gnb/rrc/broadcast.cpp
create mode 100644 src/gnb/rrc/channel.cpp
create mode 100644 src/gnb/rrc/connection.cpp
create mode 100644 src/gnb/rrc/handler.cpp
create mode 100644 src/gnb/rrc/management.cpp
create mode 100644 src/gnb/rrc/sap.cpp
create mode 100644 src/gnb/rrc/task.cpp
create mode 100644 src/gnb/rrc/task.hpp
create mode 100644 src/gnb/rrc/ues.cpp
create mode 100644 src/gnb/sctp/task.cpp
create mode 100644 src/gnb/sctp/task.hpp
create mode 100644 src/gnb/types.cpp
create mode 100644 src/gnb/types.hpp
create mode 100644 src/lib/CMakeLists.txt
create mode 100644 src/lib/app/CMakeLists.txt
create mode 100644 src/lib/app/base_app.cpp
create mode 100644 src/lib/app/base_app.hpp
create mode 100644 src/lib/app/cli_base.cpp
create mode 100644 src/lib/app/cli_base.hpp
create mode 100644 src/lib/app/cli_cmd.cpp
create mode 100644 src/lib/app/cli_cmd.hpp
create mode 100644 src/lib/app/monitor.cpp
create mode 100644 src/lib/app/monitor.hpp
create mode 100644 src/lib/app/proc_table.cpp
create mode 100644 src/lib/app/proc_table.hpp
create mode 100644 src/lib/app/ue_ctl.cpp
create mode 100644 src/lib/app/ue_ctl.hpp
create mode 100644 src/lib/asn/ngap.cpp
create mode 100644 src/lib/asn/ngap.hpp
create mode 100644 src/lib/asn/ngap_msg.hpp
create mode 100644 src/lib/asn/rrc.cpp
create mode 100644 src/lib/asn/rrc.hpp
create mode 100644 src/lib/asn/utils.cpp
create mode 100644 src/lib/asn/utils.hpp
create mode 100644 src/lib/crypt/crypt.cpp
create mode 100644 src/lib/crypt/crypt.hpp
create mode 100644 src/lib/crypt/eea2.cpp
create mode 100644 src/lib/crypt/eea2.hpp
create mode 100644 src/lib/crypt/eea3.cpp
create mode 100644 src/lib/crypt/eea3.hpp
create mode 100644 src/lib/crypt/eia2.cpp
create mode 100644 src/lib/crypt/eia2.hpp
create mode 100644 src/lib/crypt/mac.cpp
create mode 100644 src/lib/crypt/mac.hpp
create mode 100644 src/lib/crypt/milenage.cpp
create mode 100644 src/lib/crypt/milenage.hpp
create mode 100644 src/lib/crypt/snow3g.cpp
create mode 100644 src/lib/crypt/snow3g.hpp
create mode 100644 src/lib/crypt/uea2.cpp
create mode 100644 src/lib/crypt/uea2.hpp
create mode 100644 src/lib/crypt/zuc.cpp
create mode 100644 src/lib/crypt/zuc.hpp
create mode 100644 src/lib/nas/base.cpp
create mode 100644 src/lib/nas/base.hpp
create mode 100644 src/lib/nas/eap.cpp
create mode 100644 src/lib/nas/eap.hpp
create mode 100644 src/lib/nas/encode.cpp
create mode 100644 src/lib/nas/encode.hpp
create mode 100644 src/lib/nas/enums.cpp
create mode 100644 src/lib/nas/enums.hpp
create mode 100644 src/lib/nas/ie1.cpp
create mode 100644 src/lib/nas/ie1.hpp
create mode 100644 src/lib/nas/ie2.cpp
create mode 100644 src/lib/nas/ie2.hpp
create mode 100644 src/lib/nas/ie3.cpp
create mode 100644 src/lib/nas/ie3.hpp
create mode 100644 src/lib/nas/ie4.cpp
create mode 100644 src/lib/nas/ie4.hpp
create mode 100644 src/lib/nas/ie6.cpp
create mode 100644 src/lib/nas/ie6.hpp
create mode 100644 src/lib/nas/msg.cpp
create mode 100644 src/lib/nas/msg.hpp
create mode 100644 src/lib/nas/nas.cpp
create mode 100644 src/lib/nas/nas.hpp
create mode 100644 src/lib/nas/proto_conf.cpp
create mode 100644 src/lib/nas/proto_conf.hpp
create mode 100644 src/lib/nas/storage.cpp
create mode 100644 src/lib/nas/storage.hpp
create mode 100644 src/lib/nas/utils.cpp
create mode 100644 src/lib/nas/utils.hpp
create mode 100644 src/lib/nas/values.cpp
create mode 100644 src/lib/nas/values.hpp
create mode 100644 src/lib/rlc/encoder.cpp
create mode 100644 src/lib/rlc/encoder.hpp
create mode 100644 src/lib/rlc/entity_am.cpp
create mode 100644 src/lib/rlc/entity_am.hpp
create mode 100644 src/lib/rlc/entity_tm.cpp
create mode 100644 src/lib/rlc/entity_tm.hpp
create mode 100644 src/lib/rlc/entity_um.cpp
create mode 100644 src/lib/rlc/entity_um.hpp
create mode 100644 src/lib/rlc/func.cpp
create mode 100644 src/lib/rlc/func.hpp
create mode 100644 src/lib/rlc/rlc.cpp
create mode 100644 src/lib/rlc/rlc.hpp
create mode 100644 src/lib/rlc/test.cpp
create mode 100644 src/lib/rlc/test.hpp
create mode 100644 src/lib/rlc/utils.cpp
create mode 100644 src/lib/rlc/utils.hpp
create mode 100644 src/lib/rls/rls_base.cpp
create mode 100644 src/lib/rls/rls_base.hpp
create mode 100644 src/lib/rls/rls_pdu.cpp
create mode 100644 src/lib/rls/rls_pdu.hpp
create mode 100644 src/lib/rrc/encode.cpp
create mode 100644 src/lib/rrc/encode.hpp
create mode 100644 src/lib/rrc/rrc.cpp
create mode 100644 src/lib/rrc/rrc.hpp
create mode 100644 src/lib/sctp/client.cpp
create mode 100644 src/lib/sctp/client.hpp
create mode 100644 src/lib/sctp/internal.cpp
create mode 100644 src/lib/sctp/internal.hpp
create mode 100644 src/lib/sctp/sctp.cpp
create mode 100644 src/lib/sctp/sctp.hpp
create mode 100644 src/lib/sctp/server.cpp
create mode 100644 src/lib/sctp/server.hpp
create mode 100644 src/lib/sctp/types.cpp
create mode 100644 src/lib/sctp/types.hpp
create mode 100644 src/lib/udp/server.cpp
create mode 100644 src/lib/udp/server.hpp
create mode 100644 src/lib/udp/server_task.cpp
create mode 100644 src/lib/udp/server_task.hpp
create mode 100644 src/ue.cpp
create mode 100644 src/ue/CMakeLists.txt
create mode 100644 src/ue/app/cmd_handler.cpp
create mode 100644 src/ue/app/cmd_handler.hpp
create mode 100644 src/ue/app/task.cpp
create mode 100644 src/ue/app/task.hpp
create mode 100644 src/ue/nas/enc.cpp
create mode 100644 src/ue/nas/enc.hpp
create mode 100644 src/ue/nas/keys.cpp
create mode 100644 src/ue/nas/keys.hpp
create mode 100644 src/ue/nas/mm/access.cpp
create mode 100644 src/ue/nas/mm/auth.cpp
create mode 100644 src/ue/nas/mm/base.cpp
create mode 100644 src/ue/nas/mm/config.cpp
create mode 100644 src/ue/nas/mm/dereg.cpp
create mode 100644 src/ue/nas/mm/ecall.cpp
create mode 100644 src/ue/nas/mm/identity.cpp
create mode 100644 src/ue/nas/mm/messaging.cpp
create mode 100644 src/ue/nas/mm/mm.hpp
create mode 100644 src/ue/nas/mm/proc.cpp
create mode 100644 src/ue/nas/mm/radio.cpp
create mode 100644 src/ue/nas/mm/register.cpp
create mode 100644 src/ue/nas/mm/sap.cpp
create mode 100644 src/ue/nas/mm/security.cpp
create mode 100644 src/ue/nas/mm/service.cpp
create mode 100644 src/ue/nas/mm/slice.cpp
create mode 100644 src/ue/nas/mm/timer.cpp
create mode 100644 src/ue/nas/mm/transport.cpp
create mode 100644 src/ue/nas/sm/allocation.cpp
create mode 100644 src/ue/nas/sm/base.cpp
create mode 100644 src/ue/nas/sm/establishment.cpp
create mode 100644 src/ue/nas/sm/procedure.cpp
create mode 100644 src/ue/nas/sm/release.cpp
create mode 100644 src/ue/nas/sm/resource.cpp
create mode 100644 src/ue/nas/sm/sap.cpp
create mode 100644 src/ue/nas/sm/sm.hpp
create mode 100644 src/ue/nas/sm/timer.cpp
create mode 100644 src/ue/nas/sm/transport.cpp
create mode 100644 src/ue/nas/storage.cpp
create mode 100644 src/ue/nas/storage.hpp
create mode 100644 src/ue/nas/task.cpp
create mode 100644 src/ue/nas/task.hpp
create mode 100644 src/ue/nas/usim/sqn_mng.cpp
create mode 100644 src/ue/nas/usim/sqn_mng.hpp
create mode 100644 src/ue/nas/usim/usim.cpp
create mode 100644 src/ue/nas/usim/usim.hpp
create mode 100644 src/ue/nts.cpp
create mode 100644 src/ue/nts.hpp
create mode 100644 src/ue/rls/ctl_task.cpp
create mode 100644 src/ue/rls/ctl_task.hpp
create mode 100644 src/ue/rls/task.cpp
create mode 100644 src/ue/rls/task.hpp
create mode 100644 src/ue/rls/udp_task.cpp
create mode 100644 src/ue/rls/udp_task.hpp
create mode 100644 src/ue/rrc/access.cpp
create mode 100644 src/ue/rrc/cells.cpp
create mode 100644 src/ue/rrc/channel.cpp
create mode 100644 src/ue/rrc/connection.cpp
create mode 100644 src/ue/rrc/failures.cpp
create mode 100644 src/ue/rrc/handler.cpp
create mode 100644 src/ue/rrc/idle.cpp
create mode 100644 src/ue/rrc/nas.cpp
create mode 100644 src/ue/rrc/sap.cpp
create mode 100644 src/ue/rrc/state.cpp
create mode 100644 src/ue/rrc/sysinfo.cpp
create mode 100644 src/ue/rrc/task.cpp
create mode 100644 src/ue/rrc/task.hpp
create mode 100644 src/ue/timer.cpp
create mode 100644 src/ue/timer.hpp
create mode 100644 src/ue/tun/config.cpp
create mode 100644 src/ue/tun/config.hpp
create mode 100644 src/ue/tun/task.cpp
create mode 100644 src/ue/tun/task.hpp
create mode 100644 src/ue/tun/tun.cpp
create mode 100644 src/ue/tun/tun.hpp
create mode 100644 src/ue/types.cpp
create mode 100644 src/ue/types.hpp
create mode 100644 src/ue/ue.cpp
create mode 100644 src/ue/ue.hpp
create mode 100644 src/utils/CMakeLists.txt
create mode 100644 src/utils/bit_buffer.cpp
create mode 100644 src/utils/bit_buffer.hpp
create mode 100644 src/utils/bit_string.cpp
create mode 100644 src/utils/bit_string.hpp
create mode 100644 src/utils/bits.cpp
create mode 100644 src/utils/bits.hpp
create mode 100644 src/utils/common.cpp
create mode 100644 src/utils/common.hpp
create mode 100644 src/utils/common_types.cpp
create mode 100644 src/utils/common_types.hpp
create mode 100644 src/utils/concurrent_map.cpp
create mode 100644 src/utils/concurrent_map.hpp
create mode 100644 src/utils/constants.hpp
create mode 100644 src/utils/io.cpp
create mode 100644 src/utils/io.hpp
create mode 100644 src/utils/json.cpp
create mode 100644 src/utils/json.hpp
create mode 100644 src/utils/libc_error.cpp
create mode 100644 src/utils/libc_error.hpp
create mode 100644 src/utils/light_sync.cpp
create mode 100644 src/utils/light_sync.hpp
create mode 100644 src/utils/linked_list.cpp
create mode 100644 src/utils/linked_list.hpp
create mode 100644 src/utils/locked.cpp
create mode 100644 src/utils/locked.hpp
create mode 100644 src/utils/logger.cpp
create mode 100644 src/utils/logger.hpp
create mode 100644 src/utils/network.cpp
create mode 100644 src/utils/network.hpp
create mode 100644 src/utils/nts.cpp
create mode 100644 src/utils/nts.hpp
create mode 100644 src/utils/octet.cpp
create mode 100644 src/utils/octet.hpp
create mode 100644 src/utils/octet_string.cpp
create mode 100644 src/utils/octet_string.hpp
create mode 100644 src/utils/octet_view.cpp
create mode 100644 src/utils/octet_view.hpp
create mode 100644 src/utils/options.cpp
create mode 100644 src/utils/options.hpp
create mode 100644 src/utils/ordered_map.cpp
create mode 100644 src/utils/ordered_map.hpp
create mode 100644 src/utils/printer.cpp
create mode 100644 src/utils/printer.hpp
create mode 100644 src/utils/random.cpp
create mode 100644 src/utils/random.hpp
create mode 100644 src/utils/scoped_thread.cpp
create mode 100644 src/utils/scoped_thread.hpp
create mode 100644 src/utils/time_stamp.cpp
create mode 100644 src/utils/time_stamp.hpp
create mode 100644 src/utils/unique_buffer.cpp
create mode 100644 src/utils/unique_buffer.hpp
create mode 100644 src/utils/yaml_utils.cpp
create mode 100644 src/utils/yaml_utils.hpp
create mode 100644 tools/ngap-15.8.0.asn1
create mode 100644 tools/ngap-17.9.asn
create mode 100644 tools/nr-binder
create mode 100644 tools/rls-wireshark-dissector.lua
create mode 100644 tools/rrc-15.6.0.asn1
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..287ab45
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,2 @@
+BasedOnStyle: Microsoft
+AlwaysBreakTemplateDeclarations: Yes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..1d5fafc
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+* linguist-vendored
+*.cpp linguist-vendored=false
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b9fea1a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,126 @@
+# Project specific (OTHERS)
+.idea
+cmake-build-*
+CMakeLists.txt.user
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+_deps
+.directory
+.idea
+.vscode
+.settings
+*.iml
+*/.idea
+*/.settings
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+*.o
+*.a
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..08ec1fd
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,53 @@
+cmake_minimum_required(VERSION 3.17)
+project(ueransim)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_C_STANDARD 11)
+
+include_directories(src)
+
+#################### SUB DIRECTORIES ####################
+
+add_subdirectory(src/ext)
+add_subdirectory(src/utils)
+add_subdirectory(src/asn/asn1c)
+add_subdirectory(src/asn/rrc)
+add_subdirectory(src/asn/ngap)
+add_subdirectory(src/lib)
+add_subdirectory(src/gnb)
+add_subdirectory(src/ue)
+
+#################### GNB EXECUTABLE ####################
+
+add_executable(nr-gnb src/gnb.cpp)
+
+target_link_libraries(nr-gnb pthread)
+
+target_compile_options(nr-gnb PRIVATE -Wall -Wextra -pedantic)
+
+target_link_libraries(nr-gnb asn-rrc)
+target_link_libraries(nr-gnb asn-ngap)
+target_link_libraries(nr-gnb common-lib)
+target_link_libraries(nr-gnb gnb)
+
+#################### UE EXECUTABLE ####################
+
+add_executable(nr-ue src/ue.cpp)
+target_link_libraries(nr-ue pthread)
+target_compile_options(nr-ue PRIVATE -Wall -Wextra -pedantic)
+
+target_link_libraries(nr-ue common-lib)
+target_link_libraries(nr-ue ue)
+
+###################### IF BINDER ######################
+add_library(devbnd SHARED src/binder.cpp)
+target_compile_options(devbnd PRIVATE -D_GNU_SOURCE -Wall -Wextra)
+target_link_options(devbnd PRIVATE -nostartfiles)
+target_link_libraries(devbnd dl)
+
+#################### CLI EXECUTABLE ####################
+add_executable(nr-cli src/cli.cpp)
+target_link_libraries(nr-cli pthread)
+target_compile_options(nr-cli PRIVATE -Wall -Wextra -pedantic)
+
+target_link_libraries(nr-cli common-lib)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..8ba0074
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,19 @@
+# Contributor Agreement
+
+## 1. Agreement
+
+Under this Contributor Agreement (“Agreement”), the party contributing to UERANSIM (“the Contributor”), hereby grants Ali GÜNGÖR (“the Project Owner”) the contributions made to the project.
+
+## 2. License to Contributions
+
+The Contributor hereby grants to the Project Owner, a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable license to use the contributions in any manner the Project Owner deems fit.
+
+## 3. Copyright
+
+The Contributor represents that the contributions are original, and that the Contributor has the right to make the contributions without violating any copyrights, trademarks, or other intellectual property rights. By making contributions, the Contributor is allowing the Project Owner to use the contributions for the Project as deemed appropriate by the Project Owner.
+
+## 4. Implicit Acceptance of Terms
+
+By contributing to UERANSIM, the Contributor implicitly acknowledges and accepts the terms of this Agreement. It is the responsibility of the Contributor to read and understand the terms of this Agreement before making any contributions to UERANSIM.
+
+---
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/README.md b/README.md
index 4121cb5..dd47c92 100644
--- a/README.md
+++ b/README.md
@@ -56,4 +56,4 @@ All source code and related files including documentation and wiki pages are
dual licensed with [GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.en.html) and a commercial license.
> [!WARNING]
-> Closed-source commercial usage of UERANSIM is **not** permitted with the GPL-3.0. If that license is not compatable with your use case, please contact [ueransim@gmail.com](mailto:ueransim@gmail.com) to buy a commercial license.
\ No newline at end of file
+> Closed-source commercial usage of UERANSIM is **not** permitted with the GPL-3.0. If that license is not compatable with your use case, please contact [ueransim@gmail.com](mailto:ueransim@gmail.com) to buy a commercial license.
diff --git a/config/custom-gnb.yaml b/config/custom-gnb.yaml
new file mode 100644
index 0000000..3b3a5e7
--- /dev/null
+++ b/config/custom-gnb.yaml
@@ -0,0 +1,23 @@
+mcc: '286' # Mobile Country Code value
+mnc: '01' # Mobile Network Code value (2 or 3 digits)
+
+nci: '0x000000010' # NR Cell Identity (36-bit)
+idLength: 32 # NR gNB ID length in bits [22...32]
+tac: 1 # Tracking Area Code
+
+linkIp: 127.0.0.1 # gNB's local IP address for Radio Link Simulation (Usually same with local IP)
+ngapIp: 127.0.0.1 # gNB's local IP address for N2 Interface (Usually same with local IP)
+gtpIp: 127.0.0.1 # gNB's local IP address for N3 Interface (Usually same with local IP)
+
+# List of AMF address information
+amfConfigs:
+ - address: 127.0.0.5
+ port: 38412
+
+# List of supported S-NSSAIs by this gNB
+slices:
+ - sst: 1
+ sd: 1
+
+# Indicates whether or not SCTP stream number errors should be ignored.
+ignoreStreamIds: true
diff --git a/config/custom-ue.yaml b/config/custom-ue.yaml
new file mode 100644
index 0000000..de39182
--- /dev/null
+++ b/config/custom-ue.yaml
@@ -0,0 +1,83 @@
+# IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
+supi: 'imsi-286010000000001'
+# Mobile Country Code value of HPLMN
+mcc: '286'
+# Mobile Network Code value of HPLMN (2 or 3 digits)
+mnc: '01'
+# SUCI Protection Scheme : 0 for Null-scheme, 1 for Profile A and 2 for Profile B
+protectionScheme: 0
+# Home Network Public Key for protecting with SUCI Profile A
+homeNetworkPublicKey: '5a8d38864820197c3394b92613b20b91633cbd897119273bf8e4a6f4eec0a650'
+# Home Network Public Key ID for protecting with SUCI Profile A
+homeNetworkPublicKeyId: 1
+# Routing Indicator
+routingIndicator: '0000'
+
+# Permanent subscription key
+key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
+# Operator code (OP or OPC) of the UE
+op: 'E8ED289DEBA952E4283B54E88E6183CA'
+# This value specifies the OP type and it can be either 'OP' or 'OPC'
+opType: 'OP'
+# Authentication Management Field (AMF) value
+amf: '8000'
+# IMEI number of the device. It is used if no SUPI is provided
+imei: '356938035643803'
+# IMEISV number of the device. It is used if no SUPI and IMEI is provided
+imeiSv: '4370816125816151'
+
+# Network mask used for the UE's TUN interface to define the subnet size
+tunNetmask: '255.255.255.0'
+
+# List of gNB IP addresses for Radio Link Simulation
+gnbSearchList:
+ - 127.0.0.1
+
+# UAC Access Identities Configuration
+uacAic:
+ mps: false
+ mcs: false
+
+# UAC Access Control Class
+uacAcc:
+ normalClass: 0
+ class11: false
+ class12: false
+ class13: false
+ class14: false
+ class15: false
+
+# Initial PDU sessions to be established
+sessions:
+ - type: 'IPv4'
+ apn: 'internet'
+ slice:
+ sst: 1
+ sd: 1
+
+# Configured NSSAI for this UE by HPLMN
+configured-nssai:
+ - sst: 1
+ sd: 1
+
+# Default Configured NSSAI for this UE
+default-nssai:
+ - sst: 1
+ sd: 1
+
+# Supported integrity algorithms by this UE
+integrity:
+ IA1: true
+ IA2: true
+ IA3: true
+
+# Supported encryption algorithms by this UE
+ciphering:
+ EA1: true
+ EA2: true
+ EA3: true
+
+# Integrity protection maximum data rate for user plane
+integrityMaxRate:
+ uplink: 'full'
+ downlink: 'full'
diff --git a/config/free5gc-gnb.yaml b/config/free5gc-gnb.yaml
new file mode 100644
index 0000000..9a525da
--- /dev/null
+++ b/config/free5gc-gnb.yaml
@@ -0,0 +1,23 @@
+mcc: '460' # Mobile Country Code value
+mnc: '00' # Mobile Network Code value (2 or 3 digits)
+
+nci: '0x000000010' # NR Cell Identity (36-bit)
+idLength: 32 # NR gNB ID length in bits [22...32]
+tac: 4388 # Tracking Area Code
+
+linkIp: 192.168.8.117 # gNB's local IP address for Radio Link Simulation (Usually same with local IP)
+ngapIp: 192.168.8.117 # gNB's local IP address for N2 Interface (Usually same with local IP)
+gtpIp: 192.168.8.117 # gNB's local IP address for N3 Interface (Usually same with local IP)
+
+# List of AMF address information
+amfConfigs:
+ - address: 192.168.13.172
+ port: 38412
+
+# List of supported S-NSSAIs by this gNB
+slices:
+ - sst: 0x1
+ sd: 0x000001
+
+# Indicates whether or not SCTP stream number errors should be ignored.
+ignoreStreamIds: true
diff --git a/config/free5gc-ue.yaml b/config/free5gc-ue.yaml
new file mode 100644
index 0000000..ac3fa8b
--- /dev/null
+++ b/config/free5gc-ue.yaml
@@ -0,0 +1,83 @@
+# IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
+supi: imsi-460000000000001
+# Mobile Country Code value of HPLMN
+mcc: '460'
+# Mobile Network Code value of HPLMN (2 or 3 digits)
+mnc: '00'
+# SUCI Protection Scheme : 0 for Null-scheme, 1 for Profile A and 2 for Profile B
+protectionScheme: 0
+# Home Network Public Key for protecting with SUCI Profile A
+homeNetworkPublicKey: '5a8d38864820197c3394b92613b20b91633cbd897119273bf8e4a6f4eec0a650'
+# Home Network Public Key ID for protecting with SUCI Profile A
+homeNetworkPublicKeyId: 1
+# Routing Indicator
+routingIndicator: '0000'
+
+# Permanent subscription key
+key: '11111111111111111111111111111111'
+# Operator code (OP or OPC) of the UE
+op: '11111111111111111111111111111111'
+# This value specifies the OP type and it can be either 'OP' or 'OPC'
+opType: 'OPC'
+# Authentication Management Field (AMF) value
+amf: '8000'
+# IMEI number of the device. It is used if no SUPI is provided
+imei: '356938035643803'
+# IMEISV number of the device. It is used if no SUPI and IMEI is provided
+imeiSv: '4370816125816151'
+
+# Network mask used for the UE's TUN interface to define the subnet size
+tunNetmask: '255.255.255.0'
+
+# List of gNB IP addresses for Radio Link Simulation
+gnbSearchList:
+ - 192.168.8.117
+
+# UAC Access Identities Configuration
+uacAic:
+ mps: false
+ mcs: false
+
+# UAC Access Control Class
+uacAcc:
+ normalClass: 0
+ class11: false
+ class12: false
+ class13: false
+ class14: false
+ class15: false
+
+# Initial PDU sessions to be established
+sessions:
+ - type: 'IPv4'
+ apn: 'internet'
+ slice:
+ sst: 0x01
+ sd: 0x000001
+
+# Configured NSSAI for this UE by HPLMN
+configured-nssai:
+ - sst: 0x01
+ sd: 0x000001
+
+# Default Configured NSSAI for this UE
+default-nssai:
+ - sst: 1
+ sd: 1
+
+# Supported integrity algorithms by this UE
+integrity:
+ IA1: true
+ IA2: true
+ IA3: true
+
+# Supported encryption algorithms by this UE
+ciphering:
+ EA1: true
+ EA2: true
+ EA3: true
+
+# Integrity protection maximum data rate for user plane
+integrityMaxRate:
+ uplink: 'full'
+ downlink: 'full'
diff --git a/config/open5gs-gnb.yaml b/config/open5gs-gnb.yaml
new file mode 100644
index 0000000..d0cdc16
--- /dev/null
+++ b/config/open5gs-gnb.yaml
@@ -0,0 +1,22 @@
+mcc: '999' # Mobile Country Code value
+mnc: '70' # Mobile Network Code value (2 or 3 digits)
+
+nci: '0x000000010' # NR Cell Identity (36-bit)
+idLength: 32 # NR gNB ID length in bits [22...32]
+tac: 1 # Tracking Area Code
+
+linkIp: 127.0.0.1 # gNB's local IP address for Radio Link Simulation (Usually same with local IP)
+ngapIp: 127.0.0.1 # gNB's local IP address for N2 Interface (Usually same with local IP)
+gtpIp: 127.0.0.1 # gNB's local IP address for N3 Interface (Usually same with local IP)
+
+# List of AMF address information
+amfConfigs:
+ - address: 127.0.0.5
+ port: 38412
+
+# List of supported S-NSSAIs by this gNB
+slices:
+ - sst: 1
+
+# Indicates whether or not SCTP stream number errors should be ignored.
+ignoreStreamIds: true
diff --git a/config/open5gs-ue.yaml b/config/open5gs-ue.yaml
new file mode 100644
index 0000000..93629d8
--- /dev/null
+++ b/config/open5gs-ue.yaml
@@ -0,0 +1,81 @@
+# IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 digits)
+supi: 'imsi-999700000000001'
+# Mobile Country Code value of HPLMN
+mcc: '999'
+# Mobile Network Code value of HPLMN (2 or 3 digits)
+mnc: '70'
+# SUCI Protection Scheme : 0 for Null-scheme, 1 for Profile A and 2 for Profile B
+protectionScheme: 0
+# Home Network Public Key for protecting with SUCI Profile A
+homeNetworkPublicKey: '5a8d38864820197c3394b92613b20b91633cbd897119273bf8e4a6f4eec0a650'
+# Home Network Public Key ID for protecting with SUCI Profile A
+homeNetworkPublicKeyId: 1
+# Routing Indicator
+routingIndicator: '0000'
+
+# Permanent subscription key
+key: '465B5CE8B199B49FAA5F0A2EE238A6BC'
+# Operator code (OP or OPC) of the UE
+op: 'E8ED289DEBA952E4283B54E88E6183CA'
+# This value specifies the OP type and it can be either 'OP' or 'OPC'
+opType: 'OPC'
+# Authentication Management Field (AMF) value
+amf: '8000'
+# IMEI number of the device. It is used if no SUPI is provided
+imei: '356938035643803'
+# IMEISV number of the device. It is used if no SUPI and IMEI is provided
+imeiSv: '4370816125816151'
+
+# Network mask used for the UE's TUN interface to define the subnet size
+tunNetmask: '255.255.255.0'
+
+# List of gNB IP addresses for Radio Link Simulation
+gnbSearchList:
+ - 127.0.0.1
+
+# UAC Access Identities Configuration
+uacAic:
+ mps: false
+ mcs: false
+
+# UAC Access Control Class
+uacAcc:
+ normalClass: 0
+ class11: false
+ class12: false
+ class13: false
+ class14: false
+ class15: false
+
+# Initial PDU sessions to be established
+sessions:
+ - type: 'IPv4'
+ apn: 'internet'
+ slice:
+ sst: 1
+
+# Configured NSSAI for this UE by HPLMN
+configured-nssai:
+ - sst: 1
+
+# Default Configured NSSAI for this UE
+default-nssai:
+ - sst: 1
+ sd: 1
+
+# Supported integrity algorithms by this UE
+integrity:
+ IA1: true
+ IA2: true
+ IA3: true
+
+# Supported encryption algorithms by this UE
+ciphering:
+ EA1: true
+ EA2: true
+ EA3: true
+
+# Integrity protection maximum data rate for user plane
+integrityMaxRate:
+ uplink: 'full'
+ downlink: 'full'
diff --git a/src/asn/asn1c/ANY.c b/src/asn/asn1c/ANY.c
new file mode 100644
index 0000000..b24d6f4
--- /dev/null
+++ b/src/asn/asn1c/ANY.c
@@ -0,0 +1,450 @@
+/*
+ * Copyright (c) 2004-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = {
+ sizeof(ANY_t),
+ offsetof(ANY_t, _asn_ctx),
+ ASN_OSUBV_ANY
+};
+asn_TYPE_operation_t asn_OP_ANY = {
+ OCTET_STRING_free,
+ OCTET_STRING_print,
+ OCTET_STRING_compare,
+ OCTET_STRING_decode_ber,
+ OCTET_STRING_encode_der,
+ OCTET_STRING_decode_xer_hex,
+ ANY_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ 0,
+ 0,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0, 0, 0, 0,
+#else
+ ANY_decode_uper,
+ ANY_encode_uper,
+ ANY_decode_aper,
+ ANY_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ 0, /* Random fill is not defined for ANY type */
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_ANY = {
+ "ANY",
+ "ANY",
+ &asn_OP_ANY,
+ 0, 0, 0, 0,
+ { 0, 0, asn_generic_no_constraint }, /* No constraints */
+ 0, 0, /* No members */
+ &asn_SPC_ANY_specs,
+};
+
+#undef RETURN
+#define RETURN(_code) \
+ do { \
+ asn_dec_rval_t tmprval; \
+ tmprval.code = _code; \
+ tmprval.consumed = consumed_myself; \
+ return tmprval; \
+ } while(0)
+
+asn_enc_rval_t
+ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ if(flags & XER_F_CANONICAL) {
+ /*
+ * Canonical XER-encoding of ANY type is not supported.
+ */
+ ASN__ENCODE_FAILED;
+ }
+
+ /* Dump as binary */
+ return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key);
+}
+
+struct _callback_arg {
+ uint8_t *buffer;
+ size_t offset;
+ size_t size;
+};
+
+static int ANY__consume_bytes(const void *buffer, size_t size, void *key);
+
+int
+ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) {
+ struct _callback_arg arg;
+ asn_enc_rval_t erval;
+
+ if(!st || !td) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(!sptr) {
+ if(st->buf) FREEMEM(st->buf);
+ st->size = 0;
+ return 0;
+ }
+
+ arg.offset = arg.size = 0;
+ arg.buffer = 0;
+
+ erval = der_encode(td, sptr, ANY__consume_bytes, &arg);
+ if(erval.encoded == -1) {
+ if(arg.buffer) FREEMEM(arg.buffer);
+ return -1;
+ }
+ assert((size_t)erval.encoded == arg.offset);
+
+ if(st->buf) FREEMEM(st->buf);
+ st->buf = arg.buffer;
+ st->size = arg.offset;
+
+ return 0;
+}
+
+int
+ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) {
+ uint8_t *buffer = NULL;
+ ssize_t erval;
+
+ if(!st || !td) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(!sptr) {
+ if(st->buf) FREEMEM(st->buf);
+ st->size = 0;
+ return 0;
+ }
+
+ erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer);
+
+ if(erval == -1) {
+ if(buffer) FREEMEM(buffer);
+ return -1;
+ }
+ assert((size_t)erval > 0);
+
+ if(st->buf) FREEMEM(st->buf);
+ st->buf = buffer;
+ st->size = erval;
+
+ return 0;
+}
+
+ANY_t *
+ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) {
+ ANY_t tmp;
+ ANY_t *st;
+
+ if(!td || !sptr) {
+ errno = EINVAL;
+ return 0;
+ }
+
+ memset(&tmp, 0, sizeof(tmp));
+
+ if(ANY_fromType(&tmp, td, sptr)) return 0;
+
+ st = (ANY_t *)CALLOC(1, sizeof(ANY_t));
+ if(st) {
+ *st = tmp;
+ return st;
+ } else {
+ FREEMEM(tmp.buf);
+ return 0;
+ }
+}
+
+ANY_t *
+ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) {
+ ANY_t tmp;
+ ANY_t *st;
+
+ if(!td || !sptr) {
+ errno = EINVAL;
+ return 0;
+ }
+
+ memset(&tmp, 0, sizeof(tmp));
+
+ if(ANY_fromType_aper(&tmp, td, sptr)) return 0;
+
+ st = (ANY_t *)CALLOC(1, sizeof(ANY_t));
+ if(st) {
+ *st = tmp;
+ return st;
+ } else {
+ FREEMEM(tmp.buf);
+ return 0;
+ }
+}
+
+int
+ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) {
+ asn_dec_rval_t rval;
+ void *newst = 0;
+
+ if(!st || !td || !struct_ptr) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(st->buf == 0) {
+ /* Nothing to convert, make it empty. */
+ *struct_ptr = (void *)0;
+ return 0;
+ }
+
+ rval = ber_decode(0, td, (void **)&newst, st->buf, st->size);
+ if(rval.code == RC_OK) {
+ *struct_ptr = newst;
+ return 0;
+ } else {
+ /* Remove possibly partially decoded data. */
+ ASN_STRUCT_FREE(*td, newst);
+ return -1;
+ }
+}
+
+int
+ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) {
+ asn_dec_rval_t rval;
+ void *newst = 0;
+
+ if(!st || !td || !struct_ptr) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(st->buf == 0) {
+ /* Nothing to convert, make it empty. */
+ *struct_ptr = (void *)0;
+ return 0;
+ }
+
+ rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0);
+ if(rval.code == RC_OK) {
+ *struct_ptr = newst;
+ return 0;
+ } else {
+ /* Remove possibly partially decoded data. */
+ ASN_STRUCT_FREE(*td, newst);
+ return -1;
+ }
+}
+
+static int ANY__consume_bytes(const void *buffer, size_t size, void *key) {
+ struct _callback_arg *arg = (struct _callback_arg *)key;
+
+ if((arg->offset + size) >= arg->size) {
+ size_t nsize = (arg->size ? arg->size << 2 : 16) + size;
+ void *p = REALLOC(arg->buffer, nsize);
+ if(!p) return -1;
+ arg->buffer = (uint8_t *)p;
+ arg->size = nsize;
+ }
+
+ memcpy(arg->buffer + arg->offset, buffer, size);
+ arg->offset += size;
+ assert(arg->offset < arg->size);
+
+ return 0;
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_OCTET_STRING_specifics_t *specs =
+ td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_ANY_specs;
+ size_t consumed_myself = 0;
+ int repeat;
+ ANY_t *st = (ANY_t *)*sptr;
+
+ (void)opt_codec_ctx;
+ (void)constraints;
+
+ /*
+ * Allocate the structure.
+ */
+ if(!st) {
+ st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) RETURN(RC_FAIL);
+ }
+
+ ASN_DEBUG("UPER Decoding ANY type");
+
+ st->size = 0;
+ do {
+ ssize_t raw_len;
+ ssize_t len_bytes;
+ ssize_t len_bits;
+ void *p;
+ int ret;
+
+ /* Get the PER length */
+ raw_len = uper_get_length(pd, -1, 0, &repeat);
+ if(raw_len < 0) RETURN(RC_WMORE);
+ if(raw_len == 0 && st->buf) break;
+
+ ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len,
+ repeat ? "repeat" : "once", td->name);
+ len_bytes = raw_len;
+ len_bits = len_bytes * 8;
+
+ p = REALLOC(st->buf, st->size + len_bytes + 1);
+ if(!p) RETURN(RC_FAIL);
+ st->buf = (uint8_t *)p;
+
+ ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits);
+ if(ret < 0) RETURN(RC_WMORE);
+ consumed_myself += len_bits;
+ st->size += len_bytes;
+ } while(repeat);
+ st->buf[st->size] = 0; /* nul-terminate */
+
+ RETURN(RC_OK);
+}
+
+asn_enc_rval_t
+ANY_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const ANY_t *st = (const ANY_t *)sptr;
+ asn_enc_rval_t er = {0, 0, 0};
+ const uint8_t *buf;
+ size_t size;
+ int ret;
+
+ (void)constraints;
+
+ if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED;
+
+ buf = st->buf;
+ size = st->size;
+ do {
+ int need_eom = 0;
+ ssize_t may_save = uper_put_length(po, size, &need_eom);
+ if(may_save < 0) ASN__ENCODE_FAILED;
+
+ ret = per_put_many_bits(po, buf, may_save * 8);
+ if(ret) ASN__ENCODE_FAILED;
+
+ buf += may_save;
+ size -= may_save;
+ assert(!(may_save & 0x07) || !size);
+ if(need_eom && uper_put_length(po, 0, 0))
+ ASN__ENCODE_FAILED; /* End of Message length */
+ } while(size);
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_OCTET_STRING_specifics_t *specs =
+ td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_ANY_specs;
+ size_t consumed_myself = 0;
+ int repeat;
+ ANY_t *st = (ANY_t *)*sptr;
+
+ (void)opt_codec_ctx;
+ (void)constraints;
+
+ /*
+ * Allocate the structure.
+ */
+ if(!st) {
+ st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) RETURN(RC_FAIL);
+ }
+
+ ASN_DEBUG("APER Decoding ANY type");
+
+ st->size = 0;
+ do {
+ ssize_t raw_len;
+ ssize_t len_bytes;
+ ssize_t len_bits;
+ void *p;
+ int ret;
+
+ /* Get the PER length */
+ raw_len = aper_get_length(pd, -1, 0, &repeat);
+ if(raw_len < 0) RETURN(RC_WMORE);
+ if(raw_len == 0 && st->buf) break;
+
+ ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len,
+ repeat ? "repeat" : "once", td->name);
+ len_bytes = raw_len;
+ len_bits = len_bytes * 8;
+
+ p = REALLOC(st->buf, st->size + len_bytes + 1);
+ if(!p) RETURN(RC_FAIL);
+ st->buf = (uint8_t *)p;
+
+ ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits);
+ if(ret < 0) RETURN(RC_WMORE);
+ consumed_myself += len_bits;
+ st->size += len_bytes;
+ } while(repeat);
+ st->buf[st->size] = 0; /* nul-terminate */
+
+ RETURN(RC_OK);
+}
+
+asn_enc_rval_t
+ANY_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const ANY_t *st = (const ANY_t *)sptr;
+ asn_enc_rval_t er = {0, 0, 0};
+ const uint8_t *buf;
+ size_t size;
+ int ret;
+
+ (void)constraints;
+
+ if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED;
+
+ buf = st->buf;
+ size = st->size;
+ do {
+ int need_eom = 0;
+ ssize_t may_save = uper_put_length(po, size, &need_eom);
+ if(may_save < 0) ASN__ENCODE_FAILED;
+
+ ret = per_put_many_bits(po, buf, may_save * 8);
+ if(ret) ASN__ENCODE_FAILED;
+
+ buf += may_save;
+ size -= may_save;
+ assert(!(may_save & 0x07) || !size);
+ if(need_eom && uper_put_length(po, 0, 0))
+ ASN__ENCODE_FAILED; /* End of Message length */
+ } while(size);
+
+ ASN__ENCODED_OK(er);
+}
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
diff --git a/src/asn/asn1c/ANY.h b/src/asn/asn1c/ANY.h
new file mode 100644
index 0000000..b30381f
--- /dev/null
+++ b/src/asn/asn1c/ANY.h
@@ -0,0 +1,65 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_TYPE_ANY_H
+#define ASN_TYPE_ANY_H
+
+#include /* Implemented via OCTET STRING type */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ANY {
+ uint8_t *buf; /* BER-encoded ANY contents */
+ int size; /* Size of the above buffer */
+
+ asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */
+} ANY_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_ANY;
+extern asn_TYPE_operation_t asn_OP_ANY;
+extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs;
+
+asn_struct_free_f ANY_free;
+asn_struct_print_f ANY_print;
+ber_type_decoder_f ANY_decode_ber;
+der_type_encoder_f ANY_encode_der;
+xer_type_encoder_f ANY_encode_xer;
+per_type_decoder_f ANY_decode_uper;
+per_type_encoder_f ANY_encode_uper;
+per_type_decoder_f ANY_decode_aper;
+per_type_encoder_f ANY_encode_aper;
+
+#define ANY_free OCTET_STRING_free
+#define ANY_print OCTET_STRING_print
+#define ANY_compare OCTET_STRING_compare
+#define ANY_constraint asn_generic_no_constraint
+#define ANY_decode_ber OCTET_STRING_decode_ber
+#define ANY_encode_der OCTET_STRING_encode_der
+#define ANY_decode_xer OCTET_STRING_decode_xer_hex
+
+/******************************
+ * Handy conversion routines. *
+ ******************************/
+
+/* Convert another ASN.1 type into the ANY. This implies DER encoding. */
+int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr);
+int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr);
+ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr);
+ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr);
+
+/* Convert the contents of the ANY type into the specified type. */
+int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
+int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
+
+#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size))
+#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \
+ &asn_DEF_ANY, (buf), (size))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_TYPE_ANY_H */
diff --git a/src/asn/asn1c/BIT_STRING.c b/src/asn/asn1c/BIT_STRING.c
new file mode 100644
index 0000000..87246f1
--- /dev/null
+++ b/src/asn/asn1c/BIT_STRING.c
@@ -0,0 +1,656 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * BIT STRING basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = {
+ sizeof(BIT_STRING_t),
+ offsetof(BIT_STRING_t, _asn_ctx),
+ ASN_OSUBV_BIT
+};
+asn_TYPE_operation_t asn_OP_BIT_STRING = {
+ OCTET_STRING_free, /* Implemented in terms of OCTET STRING */
+ BIT_STRING_print,
+ BIT_STRING_compare,
+ OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */
+ OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */
+ OCTET_STRING_decode_xer_binary,
+ BIT_STRING_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ BIT_STRING_decode_oer,
+ BIT_STRING_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ BIT_STRING_decode_uper, /* Unaligned PER decoder */
+ BIT_STRING_encode_uper, /* Unaligned PER encoder */
+ OCTET_STRING_decode_aper, /* Aligned PER decoder */
+ OCTET_STRING_encode_aper, /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ BIT_STRING_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_BIT_STRING = {
+ "BIT STRING",
+ "BIT_STRING",
+ &asn_OP_BIT_STRING,
+ asn_DEF_BIT_STRING_tags,
+ sizeof(asn_DEF_BIT_STRING_tags)
+ / sizeof(asn_DEF_BIT_STRING_tags[0]),
+ asn_DEF_BIT_STRING_tags, /* Same as above */
+ sizeof(asn_DEF_BIT_STRING_tags)
+ / sizeof(asn_DEF_BIT_STRING_tags[0]),
+ { 0, 0, BIT_STRING_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_BIT_STRING_specs
+};
+
+/*
+ * BIT STRING generic constraint.
+ */
+int
+BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+
+ if(st && st->buf) {
+ if((st->size == 0 && st->bits_unused)
+ || st->bits_unused < 0 || st->bits_unused > 7) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: invalid padding byte (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+ } else {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ return 0;
+}
+
+static const char *_bit_pattern[16] = {
+ "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
+ "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"
+};
+
+asn_enc_rval_t
+BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t er;
+ char scratch[128];
+ char *p = scratch;
+ char *scend = scratch + (sizeof(scratch) - 10);
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ int xcan = (flags & XER_F_CANONICAL);
+ uint8_t *buf;
+ uint8_t *end;
+
+ if(!st || !st->buf)
+ ASN__ENCODE_FAILED;
+
+ er.encoded = 0;
+
+ buf = st->buf;
+ end = buf + st->size - 1; /* Last byte is special */
+
+ /*
+ * Binary dump
+ */
+ for(; buf < end; buf++) {
+ int v = *buf;
+ int nline = xcan?0:(((buf - st->buf) % 8) == 0);
+ if(p >= scend || nline) {
+ ASN__CALLBACK(scratch, p - scratch);
+ p = scratch;
+ if(nline) ASN__TEXT_INDENT(1, ilevel);
+ }
+ memcpy(p + 0, _bit_pattern[v >> 4], 4);
+ memcpy(p + 4, _bit_pattern[v & 0x0f], 4);
+ p += 8;
+ }
+
+ if(!xcan && ((buf - st->buf) % 8) == 0)
+ ASN__TEXT_INDENT(1, ilevel);
+ ASN__CALLBACK(scratch, p - scratch);
+ p = scratch;
+
+ if(buf == end) {
+ int v = *buf;
+ int ubits = st->bits_unused;
+ int i;
+ for(i = 7; i >= ubits; i--)
+ *p++ = (v & (1 << i)) ? 0x31 : 0x30;
+ ASN__CALLBACK(scratch, p - scratch);
+ }
+
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ ASN__ENCODE_FAILED;
+}
+
+
+/*
+ * BIT STRING specific contents printer.
+ */
+int
+BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const char * const h2c = "0123456789ABCDEF";
+ char scratch[64];
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ uint8_t *buf;
+ uint8_t *end;
+ char *p = scratch;
+
+ (void)td; /* Unused argument */
+
+ if(!st || !st->buf)
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+
+ ilevel++;
+ buf = st->buf;
+ end = buf + st->size;
+
+ /*
+ * Hexadecimal dump.
+ */
+ for(; buf < end; buf++) {
+ if((buf - st->buf) % 16 == 0 && (st->size > 16)
+ && buf != st->buf) {
+ _i_INDENT(1);
+ /* Dump the string */
+ if(cb(scratch, p - scratch, app_key) < 0) return -1;
+ p = scratch;
+ }
+ *p++ = h2c[*buf >> 4];
+ *p++ = h2c[*buf & 0x0F];
+ *p++ = 0x20;
+ }
+
+ if(p > scratch) {
+ p--; /* Eat the tailing space */
+
+ if((st->size > 16)) {
+ _i_INDENT(1);
+ }
+
+ /* Dump the incomplete 16-bytes row */
+ if(cb(scratch, p - scratch, app_key) < 0)
+ return -1;
+ }
+
+ if(st->bits_unused) {
+ int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)",
+ st->bits_unused, st->bits_unused == 1 ? "" : "s");
+ assert(ret > 0 && ret < (ssize_t)sizeof(scratch));
+ if(ret > 0 && ret < (ssize_t)sizeof(scratch)
+ && cb(scratch, ret, app_key) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+/*
+ * Non-destructively remove the trailing 0-bits from the given bit string.
+ */
+static const BIT_STRING_t *
+BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) {
+ const uint8_t *b;
+ union {
+ const uint8_t *c_buf;
+ uint8_t *nc_buf;
+ } unconst;
+
+ if(st->size == 0) {
+ assert(st->bits_unused == 0);
+ return st;
+ } else {
+ for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) {
+ ;
+ }
+ /* b points to the last byte which may contain data */
+ if(*b) {
+ int unused = 7;
+ uint8_t v = *b;
+ v &= -(int8_t)v;
+ if(v & 0x0F) unused -= 4;
+ if(v & 0x33) unused -= 2;
+ if(v & 0x55) unused -= 1;
+ tmp->size = b-st->buf + 1;
+ tmp->bits_unused = unused;
+ } else {
+ tmp->size = b-st->buf;
+ tmp->bits_unused = 0;
+ }
+
+ assert(b >= st->buf);
+ }
+
+ unconst.c_buf = st->buf;
+ tmp->buf = unconst.nc_buf;
+ return tmp;
+}
+
+/*
+ * Lexicographically compare the common prefix of both strings,
+ * and if it is the same return -1 for the smallest string.
+ */
+int
+BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+ const void *bptr) {
+ /*
+ * Remove information about trailing bits, since
+ * X.680 (08/2015) #22.7 "ensure that different semantics are not"
+ * "associated with [values that differ only in] the trailing 0 bits."
+ */
+ BIT_STRING_t compact_a, compact_b;
+ const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a);
+ const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b);
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics;
+
+ assert(specs && specs->subvariant == ASN_OSUBV_BIT);
+
+ if(a && b) {
+ size_t common_prefix_size = a->size <= b->size ? a->size : b->size;
+ int ret = memcmp(a->buf, b->buf, common_prefix_size);
+ if(ret == 0) {
+ /* Figure out which string with equal prefixes is longer. */
+ if(a->size < b->size) {
+ return -1;
+ } else if(a->size > b->size) {
+ return 1;
+ } else {
+ /* Figure out how many unused bits */
+ if(a->bits_unused > b->bits_unused) {
+ return -1;
+ } else if(a->bits_unused < b->bits_unused) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ } else {
+ return ret;
+ }
+ } else if(!a && !b) {
+ return 0;
+ } else if(!a) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+#undef RETURN
+#define RETURN(_code) \
+ do { \
+ asn_dec_rval_t tmprval; \
+ tmprval.code = _code; \
+ tmprval.consumed = consumed_myself; \
+ return tmprval; \
+ } while(0)
+
+static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = {
+ APC_SEMI_CONSTRAINED, -1, -1, 0, 0};
+
+asn_dec_rval_t
+BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_BIT_STRING_specs;
+ const asn_per_constraints_t *pc =
+ constraints ? constraints : td->encoding_constraints.per_constraints;
+ const asn_per_constraint_t *csiz;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ BIT_STRING_t *st = (BIT_STRING_t *)*sptr;
+ ssize_t consumed_myself = 0;
+ int repeat;
+
+ (void)opt_codec_ctx;
+
+ if(pc) {
+ csiz = &pc->size;
+ } else {
+ csiz = &asn_DEF_BIT_STRING_constraint_size;
+ }
+
+ if(specs->subvariant != ASN_OSUBV_BIT) {
+ ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant);
+ RETURN(RC_FAIL);
+ }
+
+ /*
+ * Allocate the string.
+ */
+ if(!st) {
+ st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) RETURN(RC_FAIL);
+ }
+
+ ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d",
+ csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible",
+ csiz->lower_bound, csiz->upper_bound, csiz->effective_bits);
+
+ if(csiz->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) RETURN(RC_WMORE);
+ if(inext) {
+ csiz = &asn_DEF_BIT_STRING_constraint_size;
+ }
+ }
+
+ if(csiz->effective_bits >= 0) {
+ FREEMEM(st->buf);
+ st->size = (csiz->upper_bound + 7) >> 3;
+ st->buf = (uint8_t *)MALLOC(st->size + 1);
+ if(!st->buf) { st->size = 0; RETURN(RC_FAIL); }
+ }
+
+ /* X.691, #16.5: zero-length encoding */
+ /* X.691, #16.6: short fixed length encoding (up to 2 octets) */
+ /* X.691, #16.7: long fixed length encoding (up to 64K octets) */
+ if(csiz->effective_bits == 0) {
+ int ret;
+ ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound);
+ ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound);
+ if(ret < 0) RETURN(RC_WMORE);
+ consumed_myself += csiz->upper_bound;
+ st->buf[st->size] = 0;
+ st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7;
+ RETURN(RC_OK);
+ }
+
+ st->size = 0;
+ do {
+ ssize_t raw_len;
+ ssize_t len_bytes;
+ ssize_t len_bits;
+ void *p;
+ int ret;
+
+ /* Get the PER length */
+ raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound,
+ &repeat);
+ if(raw_len < 0) RETURN(RC_WMORE);
+ if(raw_len == 0 && st->buf) break;
+
+ ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)",
+ (long)csiz->effective_bits, (long)raw_len,
+ repeat ? "repeat" : "once", td->name);
+ len_bits = raw_len;
+ len_bytes = (len_bits + 7) >> 3;
+ if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7);
+ /* len_bits be multiple of 16K if repeat is set */
+ p = REALLOC(st->buf, st->size + len_bytes + 1);
+ if(!p) RETURN(RC_FAIL);
+ st->buf = (uint8_t *)p;
+
+ ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits);
+ if(ret < 0) RETURN(RC_WMORE);
+ st->size += len_bytes;
+ } while(repeat);
+ st->buf[st->size] = 0; /* nul-terminate */
+
+ return rval;
+}
+
+asn_enc_rval_t
+BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_OCTET_STRING_specifics_t *specs =
+ td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_BIT_STRING_specs;
+ const asn_per_constraints_t *pc =
+ constraints ? constraints : td->encoding_constraints.per_constraints;
+ const asn_per_constraint_t *csiz;
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ BIT_STRING_t compact_bstr; /* Do not modify this directly! */
+ asn_enc_rval_t er = { 0, 0, 0 };
+ int inext = 0; /* Lies not within extension root */
+ size_t size_in_bits;
+ const uint8_t *buf;
+ int ret;
+ int ct_extensible;
+
+ if(!st || (!st->buf && st->size))
+ ASN__ENCODE_FAILED;
+
+ if(specs->subvariant == ASN_OSUBV_BIT) {
+ if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7))
+ ASN__ENCODE_FAILED;
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+
+ if(pc) {
+ csiz = &pc->size;
+ } else {
+ csiz = &asn_DEF_BIT_STRING_constraint_size;
+ }
+ ct_extensible = csiz->flags & APC_EXTENSIBLE;
+
+ /* Figure out the size without the trailing bits */
+ st = BIT_STRING__compactify(st, &compact_bstr);
+ size_in_bits = 8 * st->size - st->bits_unused;
+
+ ASN_DEBUG(
+ "Encoding %s into %" ASN_PRI_SIZE " bits"
+ " (%ld..%ld, effective %d)%s",
+ td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound,
+ csiz->effective_bits, ct_extensible ? " EXT" : "");
+
+ /* Figure out whether size lies within PER visible constraint */
+
+ if(csiz->effective_bits >= 0) {
+ if((ssize_t)size_in_bits > csiz->upper_bound) {
+ if(ct_extensible) {
+ csiz = &asn_DEF_BIT_STRING_constraint_size;
+ inext = 1;
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+ }
+ } else {
+ inext = 0;
+ }
+
+ if(ct_extensible) {
+ /* Declare whether length is [not] within extension root */
+ if(per_put_few_bits(po, inext, 1))
+ ASN__ENCODE_FAILED;
+ }
+
+ if(csiz->effective_bits >= 0 && !inext) {
+ int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound;
+ ASN_DEBUG(
+ "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual "
+ "value %" ASN_PRI_SSIZE "",
+ st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits,
+ add_trailer,
+ add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound);
+ ret = per_put_few_bits(
+ po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound,
+ csiz->effective_bits);
+ if(ret) ASN__ENCODE_FAILED;
+ ret = per_put_many_bits(po, st->buf, size_in_bits);
+ if(ret) ASN__ENCODE_FAILED;
+ if(add_trailer) {
+ static const uint8_t zeros[16];
+ size_t trailing_zero_bits = csiz->lower_bound - size_in_bits;
+ while(trailing_zero_bits > 0) {
+ if(trailing_zero_bits > 8 * sizeof(zeros)) {
+ ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros));
+ trailing_zero_bits -= 8 * sizeof(zeros);
+ } else {
+ ret = per_put_many_bits(po, zeros, trailing_zero_bits);
+ trailing_zero_bits = 0;
+ }
+ if(ret) ASN__ENCODE_FAILED;
+ }
+ }
+ ASN__ENCODED_OK(er);
+ }
+
+ ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size);
+
+ buf = st->buf;
+ do {
+ int need_eom = 0;
+ ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom);
+ if(maySave < 0) ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits);
+
+ ret = per_put_many_bits(po, buf, maySave);
+ if(ret) ASN__ENCODE_FAILED;
+
+ buf += maySave >> 3;
+ size_in_bits -= maySave;
+ assert(!(maySave & 0x07) || !size_in_bits);
+ if(need_eom && uper_put_length(po, 0, 0))
+ ASN__ENCODE_FAILED; /* End of Message length */
+ } while(size_in_bits);
+
+ ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+asn_random_fill_result_t
+BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constraints,
+ size_t max_length) {
+ const asn_OCTET_STRING_specifics_t *specs =
+ td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_BIT_STRING_specs;
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ static unsigned lengths[] = {0, 1, 2, 3, 4, 8,
+ 126, 127, 128, 16383, 16384, 16385,
+ 65534, 65535, 65536, 65537};
+ uint8_t *buf;
+ uint8_t *bend;
+ uint8_t *b;
+ size_t rnd_bits, rnd_len;
+ BIT_STRING_t *st;
+
+ if(max_length == 0) return result_skipped;
+
+ switch(specs->subvariant) {
+ case ASN_OSUBV_ANY:
+ return result_failed;
+ case ASN_OSUBV_BIT:
+ break;
+ default:
+ break;
+ }
+
+ /* Figure out how far we should go */
+ rnd_bits = lengths[asn_random_between(
+ 0, sizeof(lengths) / sizeof(lengths[0]) - 1)];
+ if(!constraints || !constraints->per_constraints)
+ constraints = &td->encoding_constraints;
+ if(constraints->per_constraints) {
+ const asn_per_constraint_t *pc = &constraints->per_constraints->size;
+ if(pc->flags & APC_CONSTRAINED) {
+ long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length
+ ? pc->upper_bound
+ : (ssize_t)max_length;
+ if(max_length < (size_t)pc->lower_bound) {
+ return result_skipped;
+ }
+ if(pc->flags & APC_EXTENSIBLE) {
+ switch(asn_random_between(0, 5)) {
+ case 0:
+ if(pc->lower_bound > 0) {
+ rnd_bits = pc->lower_bound - 1;
+ break;
+ }
+ /* Fall through */
+ case 1:
+ rnd_bits = pc->upper_bound + 1;
+ break;
+ case 2:
+ /* Keep rnd_bits from the table */
+ if(rnd_bits < max_length) {
+ break;
+ }
+ /* Fall through */
+ default:
+ rnd_bits = asn_random_between(pc->lower_bound,
+ suggested_upper_bound);
+ }
+ } else {
+ rnd_bits =
+ asn_random_between(pc->lower_bound, suggested_upper_bound);
+ }
+ } else {
+ rnd_bits = asn_random_between(0, max_length - 1);
+ }
+ } else if(rnd_bits >= max_length) {
+ rnd_bits = asn_random_between(0, max_length - 1);
+ }
+
+ rnd_len = (rnd_bits + 7) / 8;
+ buf = CALLOC(1, rnd_len + 1);
+ if(!buf) return result_failed;
+
+ bend = &buf[rnd_len];
+
+ for(b = buf; b < bend; b++) {
+ *(uint8_t *)b = asn_random_between(0, 255);
+ }
+ *b = 0; /* Zero-terminate just in case. */
+
+ if(*sptr) {
+ st = *sptr;
+ FREEMEM(st->buf);
+ } else {
+ st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) {
+ FREEMEM(buf);
+ return result_failed;
+ }
+ }
+
+ st->buf = buf;
+ st->size = rnd_len;
+ st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7;
+ if(st->bits_unused) {
+ assert(st->size > 0);
+ st->buf[st->size-1] &= 0xff << st->bits_unused;
+ }
+
+ result_ok.length = st->size;
+ return result_ok;
+}
diff --git a/src/asn/asn1c/BIT_STRING.h b/src/asn/asn1c/BIT_STRING.h
new file mode 100644
index 0000000..c1bdbbc
--- /dev/null
+++ b/src/asn/asn1c/BIT_STRING.h
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _BIT_STRING_H_
+#define _BIT_STRING_H_
+
+#include /* Some help from OCTET STRING */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct BIT_STRING_s {
+ uint8_t *buf; /* BIT STRING body */
+ size_t size; /* Size of the above buffer */
+
+ int bits_unused;/* Unused trailing bits in the last octet (0..7) */
+
+ asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */
+} BIT_STRING_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING;
+extern asn_TYPE_operation_t asn_OP_BIT_STRING;
+extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs;
+
+asn_struct_print_f BIT_STRING_print; /* Human-readable output */
+asn_struct_compare_f BIT_STRING_compare;
+asn_constr_check_f BIT_STRING_constraint;
+xer_type_encoder_f BIT_STRING_encode_xer;
+oer_type_decoder_f BIT_STRING_decode_oer;
+oer_type_encoder_f BIT_STRING_encode_oer;
+per_type_decoder_f BIT_STRING_decode_uper;
+per_type_encoder_f BIT_STRING_encode_uper;
+asn_random_fill_f BIT_STRING_random_fill;
+
+#define BIT_STRING_free OCTET_STRING_free
+#define BIT_STRING_decode_ber OCTET_STRING_decode_ber
+#define BIT_STRING_encode_der OCTET_STRING_encode_der
+#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary
+#define BIT_STRING_decode_aper OCTET_STRING_decode_aper
+#define BIT_STRING_encode_aper OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BIT_STRING_H_ */
diff --git a/src/asn/asn1c/BOOLEAN.c b/src/asn/asn1c/BOOLEAN.c
new file mode 100644
index 0000000..1bb7f7d
--- /dev/null
+++ b/src/asn/asn1c/BOOLEAN.c
@@ -0,0 +1,492 @@
+/*-
+ * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * BOOLEAN basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (1 << 2))
+};
+asn_TYPE_operation_t asn_OP_BOOLEAN = {
+ BOOLEAN_free,
+ BOOLEAN_print,
+ BOOLEAN_compare,
+ BOOLEAN_decode_ber,
+ BOOLEAN_encode_der,
+ BOOLEAN_decode_xer,
+ BOOLEAN_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ BOOLEAN_decode_oer,
+ BOOLEAN_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ BOOLEAN_decode_uper, /* Unaligned PER decoder */
+ BOOLEAN_encode_uper, /* Unaligned PER encoder */
+ BOOLEAN_decode_aper, /* Aligned PER decoder */
+ BOOLEAN_encode_aper, /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ BOOLEAN_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_BOOLEAN = {
+ "BOOLEAN",
+ "BOOLEAN",
+ &asn_OP_BOOLEAN,
+ asn_DEF_BOOLEAN_tags,
+ sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]),
+ asn_DEF_BOOLEAN_tags, /* Same as above */
+ sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+/*
+ * Decode BOOLEAN type.
+ */
+asn_dec_rval_t
+BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **bool_value,
+ const void *buf_ptr, size_t size, int tag_mode) {
+ BOOLEAN_t *st = (BOOLEAN_t *)*bool_value;
+ asn_dec_rval_t rval;
+ ber_tlv_len_t length;
+ ber_tlv_len_t lidx;
+
+ if(st == NULL) {
+ st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st)));
+ if(st == NULL) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ return rval;
+ }
+ }
+
+ ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)",
+ td->name, tag_mode);
+
+ /*
+ * Check tags.
+ */
+ rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size,
+ tag_mode, 0, &length, 0);
+ if(rval.code != RC_OK)
+ return rval;
+
+ ASN_DEBUG("Boolean length is %d bytes", (int)length);
+
+ buf_ptr = ((const char *)buf_ptr) + rval.consumed;
+ size -= rval.consumed;
+ if(length > (ber_tlv_len_t)size) {
+ rval.code = RC_WMORE;
+ rval.consumed = 0;
+ return rval;
+ }
+
+ /*
+ * Compute boolean value.
+ */
+ for(*st = 0, lidx = 0;
+ (lidx < length) && *st == 0; lidx++) {
+ /*
+ * Very simple approach: read bytes until the end or
+ * value is already TRUE.
+ * BOOLEAN is not supposed to contain meaningful data anyway.
+ */
+ *st |= ((const uint8_t *)buf_ptr)[lidx];
+ }
+
+ rval.code = RC_OK;
+ rval.consumed += length;
+
+ ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d",
+ (long)rval.consumed, (long)length,
+ td->name, *st);
+
+ return rval;
+}
+
+asn_enc_rval_t
+BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ asn_enc_rval_t erval;
+ const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
+
+ erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key);
+ if(erval.encoded == -1) {
+ erval.failed_type = td;
+ erval.structure_ptr = sptr;
+ return erval;
+ }
+
+ if(cb) {
+ uint8_t bool_value;
+
+ bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */
+
+ if(cb(&bool_value, 1, app_key) < 0) {
+ erval.encoded = -1;
+ erval.failed_type = td;
+ erval.structure_ptr = sptr;
+ return erval;
+ }
+ }
+
+ erval.encoded += 1;
+
+ ASN__ENCODED_OK(erval);
+}
+
+
+/*
+ * Decode the chunk of XML text encoding INTEGER.
+ */
+static enum xer_pbd_rval
+BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+ const void *chunk_buf, size_t chunk_size) {
+ BOOLEAN_t *st = (BOOLEAN_t *)sptr;
+ const char *p = (const char *)chunk_buf;
+
+ (void)td;
+
+ if(chunk_size && p[0] == 0x3c /* '<' */) {
+ switch(xer_check_tag(chunk_buf, chunk_size, "false")) {
+ case XCT_BOTH:
+ /* "" */
+ *st = 0;
+ break;
+ case XCT_UNKNOWN_BO:
+ if(xer_check_tag(chunk_buf, chunk_size, "true")
+ != XCT_BOTH)
+ return XPBD_BROKEN_ENCODING;
+ /* "" */
+ *st = 1; /* Or 0xff as in DER?.. */
+ break;
+ default:
+ return XPBD_BROKEN_ENCODING;
+ }
+ return XPBD_BODY_CONSUMED;
+ } else {
+ return XPBD_BROKEN_ENCODING;
+ }
+}
+
+
+asn_dec_rval_t
+BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ return xer_decode_primitive(opt_codec_ctx, td,
+ sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size,
+ BOOLEAN__xer_body_decode);
+}
+
+asn_enc_rval_t
+BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
+ asn_enc_rval_t er = {0, 0, 0};
+
+ (void)ilevel;
+ (void)flags;
+
+ if(!st) ASN__ENCODE_FAILED;
+
+ if(*st) {
+ ASN__CALLBACK("", 7);
+ } else {
+ ASN__CALLBACK("", 8);
+ }
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ ASN__ENCODE_FAILED;
+}
+
+int
+BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
+ const char *buf;
+ size_t buflen;
+
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(st) {
+ if(*st) {
+ buf = "TRUE";
+ buflen = 4;
+ } else {
+ buf = "FALSE";
+ buflen = 5;
+ }
+ } else {
+ buf = "";
+ buflen = 8;
+ }
+
+ return (cb(buf, buflen, app_key) < 0) ? -1 : 0;
+}
+
+void
+BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr,
+ enum asn_struct_free_method method) {
+ if(td && ptr) {
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(ptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(ptr, 0, sizeof(BOOLEAN_t));
+ break;
+ }
+ }
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+ BOOLEAN_t *st = (BOOLEAN_t *)*sptr;
+
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+
+ if(!st) {
+ st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st)));
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ /*
+ * Extract a single bit
+ */
+ switch(per_get_few_bits(pd, 1)) {
+ case 1: *st = 1; break;
+ case 0: *st = 0; break;
+ case -1: default: ASN__DECODE_STARVED;
+ }
+
+ ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE");
+
+ rv.code = RC_OK;
+ rv.consumed = 1;
+ return rv;
+}
+
+
+asn_enc_rval_t
+BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
+ asn_enc_rval_t er = { 0, 0, 0 };
+
+ (void)constraints;
+
+ if(!st) ASN__ENCODE_FAILED;
+
+ if(per_put_few_bits(po, *st ? 1 : 0, 1))
+ ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+ BOOLEAN_t *st = (BOOLEAN_t *)*sptr;
+
+ (void)opt_codec_ctx;
+ (void)constraints;
+ (void)td;
+
+ if(!st) {
+ st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st)));
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ /*
+ * Extract a single bit
+ */
+ switch(per_get_few_bits(pd, 1)) {
+ case 1:
+ *st = 1;
+ break;
+ case 0:
+ *st = 0;
+ break;
+ case -1:
+ default:
+ ASN__DECODE_STARVED;
+ }
+
+ ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE");
+
+ rv.code = RC_OK;
+ rv.consumed = 1;
+ return rv;
+}
+
+asn_enc_rval_t
+BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
+ asn_enc_rval_t er = { 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/src/asn/asn1c/BOOLEAN.h b/src/asn/asn1c/BOOLEAN.h
new file mode 100644
index 0000000..620acf7
--- /dev/null
+++ b/src/asn/asn1c/BOOLEAN.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _BOOLEAN_H_
+#define _BOOLEAN_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The underlying integer may contain various values, but everything
+ * non-zero is capped to 0xff by the DER encoder. The BER decoder may
+ * yield non-zero values different from 1, beware.
+ */
+typedef int BOOLEAN_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN;
+extern asn_TYPE_operation_t asn_OP_BOOLEAN;
+
+asn_struct_free_f BOOLEAN_free;
+asn_struct_print_f BOOLEAN_print;
+asn_struct_compare_f BOOLEAN_compare;
+ber_type_decoder_f BOOLEAN_decode_ber;
+der_type_encoder_f BOOLEAN_encode_der;
+oer_type_decoder_f BOOLEAN_decode_oer;
+oer_type_encoder_f BOOLEAN_encode_oer;
+per_type_decoder_f BOOLEAN_decode_uper;
+per_type_encoder_f BOOLEAN_encode_uper;
+per_type_decoder_f BOOLEAN_decode_aper;
+per_type_encoder_f BOOLEAN_encode_aper;
+xer_type_decoder_f BOOLEAN_decode_xer;
+xer_type_encoder_f BOOLEAN_encode_xer;
+asn_random_fill_f BOOLEAN_random_fill;
+
+#define BOOLEAN_constraint asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BOOLEAN_H_ */
diff --git a/src/asn/asn1c/CMakeLists.txt b/src/asn/asn1c/CMakeLists.txt
new file mode 100644
index 0000000..552c743
--- /dev/null
+++ b/src/asn/asn1c/CMakeLists.txt
@@ -0,0 +1,7 @@
+file(GLOB HDR_FILES *.h)
+file(GLOB SRC_FILES *.c)
+
+add_library(asn-asn1c ${HDR_FILES} ${SRC_FILES})
+target_include_directories(asn-asn1c PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+target_compile_options(asn-asn1c PUBLIC -DASN_DISABLE_OER_SUPPORT)
diff --git a/src/asn/asn1c/INTEGER.c b/src/asn/asn1c/INTEGER.c
new file mode 100644
index 0000000..ab001b2
--- /dev/null
+++ b/src/asn/asn1c/INTEGER.c
@@ -0,0 +1,1723 @@
+/*-
+ * 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;
+
+ (void)ilevel;
+ (void)flags;
+
+ if(!st || !st->buf)
+ ASN__ENCODE_FAILED;
+
+ er.encoded = INTEGER__dump(td, st, cb, app_key, 1);
+ if(er.encoded < 0) ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ INTEGER_t *st = (INTEGER_t *)*sptr;
+ const asn_per_constraint_t *ct;
+ int repeat;
+
+ (void)opt_codec_ctx;
+
+ if(!st) {
+ st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st)));
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ if(!constraints) constraints = td->encoding_constraints.per_constraints;
+ ct = constraints ? &constraints->value : 0;
+
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) ASN__DECODE_STARVED;
+ if(inext) ct = 0;
+ }
+
+ FREEMEM(st->buf);
+ st->buf = 0;
+ st->size = 0;
+ if(ct) {
+ if(ct->flags & APC_SEMI_CONSTRAINED) {
+ st->buf = (uint8_t *)CALLOC(1, 2);
+ if(!st->buf) ASN__DECODE_FAILED;
+ st->size = 1;
+ } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) {
+ size_t size = (ct->range_bits + 7) >> 3;
+ st->buf = (uint8_t *)MALLOC(1 + size + 1);
+ if(!st->buf) ASN__DECODE_FAILED;
+ st->size = size;
+ }
+ }
+
+ /* X.691-2008/11, #13.2.2, constrained whole number */
+ if(ct && ct->flags != APC_UNCONSTRAINED) {
+ /* #11.5.6 */
+ ASN_DEBUG("Integer with range %d bits", ct->range_bits);
+ if(ct->range_bits >= 0) {
+ if((size_t)ct->range_bits > 8 * sizeof(unsigned long))
+ ASN__DECODE_FAILED;
+
+ if(specs && specs->field_unsigned) {
+ unsigned long uvalue = 0;
+ if(uper_get_constrained_whole_number(pd,
+ &uvalue, ct->range_bits))
+ ASN__DECODE_STARVED;
+ ASN_DEBUG("Got value %lu + low %ld",
+ uvalue, ct->lower_bound);
+ uvalue += ct->lower_bound;
+ if(asn_ulong2INTEGER(st, uvalue))
+ ASN__DECODE_FAILED;
+ } else {
+ unsigned long uvalue = 0;
+ long svalue;
+ if(uper_get_constrained_whole_number(pd,
+ &uvalue, ct->range_bits))
+ ASN__DECODE_STARVED;
+ ASN_DEBUG("Got value %lu + low %ld",
+ uvalue, ct->lower_bound);
+ if(per_long_range_unrebase(uvalue, ct->lower_bound,
+ ct->upper_bound, &svalue)
+ || asn_long2INTEGER(st, svalue)) {
+ ASN__DECODE_FAILED;
+ }
+ }
+ return rval;
+ }
+ } else {
+ ASN_DEBUG("Decoding unconstrained integer %s", td->name);
+ }
+
+ /* X.691, #12.2.3, #12.2.4 */
+ do {
+ ssize_t len = 0;
+ void *p = NULL;
+ int ret = 0;
+
+ /* Get the PER length */
+ len = uper_get_length(pd, -1, 0, &repeat);
+ if(len < 0) ASN__DECODE_STARVED;
+
+ p = REALLOC(st->buf, st->size + len + 1);
+ if(!p) ASN__DECODE_FAILED;
+ st->buf = (uint8_t *)p;
+
+ ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len);
+ if(ret < 0) ASN__DECODE_STARVED;
+ st->size += len;
+ } while(repeat);
+ st->buf[st->size] = 0; /* JIC */
+
+ /* #12.2.3 */
+ if(ct && ct->lower_bound) {
+ /*
+ * TODO: replace by in-place arithmetics.
+ */
+ long value = 0;
+ if(asn_INTEGER2long(st, &value))
+ ASN__DECODE_FAILED;
+ if(asn_imax2INTEGER(st, value + ct->lower_bound))
+ ASN__DECODE_FAILED;
+ }
+
+ return rval;
+}
+
+asn_enc_rval_t
+INTEGER_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ const INTEGER_t *st = (const INTEGER_t *)sptr;
+ const uint8_t *buf;
+ const uint8_t *end;
+ const asn_per_constraint_t *ct;
+ long value = 0;
+
+ if(!st || st->size == 0) ASN__ENCODE_FAILED;
+
+ if(!constraints) constraints = td->encoding_constraints.per_constraints;
+ ct = constraints ? &constraints->value : 0;
+
+ er.encoded = 0;
+
+ if(ct) {
+ int inext = 0;
+ if(specs && specs->field_unsigned) {
+ unsigned long uval;
+ if(asn_INTEGER2ulong(st, &uval))
+ ASN__ENCODE_FAILED;
+ /* Check proper range */
+ if(ct->flags & APC_SEMI_CONSTRAINED) {
+ if(uval < (unsigned long)ct->lower_bound)
+ inext = 1;
+ } else if(ct->range_bits >= 0) {
+ if(uval < (unsigned long)ct->lower_bound
+ || uval > (unsigned long)ct->upper_bound)
+ inext = 1;
+ }
+ ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s",
+ uval, st->buf[0], st->size,
+ ct->lower_bound, ct->upper_bound,
+ inext ? "ext" : "fix");
+ value = uval;
+ } else {
+ if(asn_INTEGER2long(st, &value))
+ ASN__ENCODE_FAILED;
+ /* Check proper range */
+ if(ct->flags & APC_SEMI_CONSTRAINED) {
+ if(value < ct->lower_bound)
+ inext = 1;
+ } else if(ct->range_bits >= 0) {
+ if(value < ct->lower_bound
+ || value > ct->upper_bound)
+ inext = 1;
+ }
+ ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s",
+ value, st->buf[0], st->size,
+ ct->lower_bound, ct->upper_bound,
+ inext ? "ext" : "fix");
+ }
+ if(ct->flags & APC_EXTENSIBLE) {
+ if(per_put_few_bits(po, inext, 1))
+ ASN__ENCODE_FAILED;
+ if(inext) ct = 0;
+ } else if(inext) {
+ ASN__ENCODE_FAILED;
+ }
+ }
+
+
+ /* X.691-11/2008, #13.2.2, test if constrained whole number */
+ if(ct && ct->range_bits >= 0) {
+ unsigned long v;
+ /* #11.5.6 -> #11.3 */
+ ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits",
+ value, value - ct->lower_bound, ct->range_bits);
+ if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) {
+ ASN__ENCODE_FAILED;
+ }
+ if(uper_put_constrained_whole_number_u(po, v, ct->range_bits))
+ ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ }
+
+ if(ct && ct->lower_bound) {
+ ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound);
+ /* TODO: adjust lower bound */
+ ASN__ENCODE_FAILED;
+ }
+
+ for(buf = st->buf, end = st->buf + st->size; buf < end;) {
+ int need_eom = 0;
+ ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom);
+ if(mayEncode < 0)
+ ASN__ENCODE_FAILED;
+ if(per_put_many_bits(po, buf, 8 * mayEncode))
+ ASN__ENCODE_FAILED;
+ buf += mayEncode;
+ if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED;
+ }
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ INTEGER_t *st = (INTEGER_t *)*sptr;
+ const asn_per_constraint_t *ct;
+ int repeat;
+
+ (void)opt_codec_ctx;
+
+ if(!st) {
+ st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st)));
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ if(!constraints) constraints = td->encoding_constraints.per_constraints;
+ ct = constraints ? &constraints->value : 0;
+
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) ASN__DECODE_STARVED;
+ if(inext) ct = 0;
+ }
+
+ FREEMEM(st->buf);
+ st->buf = 0;
+ st->size = 0;
+ if(ct) {
+ if(ct->flags & APC_SEMI_CONSTRAINED) {
+ st->buf = (uint8_t *)CALLOC(1, 2);
+ if(!st->buf) ASN__DECODE_FAILED;
+ st->size = 1;
+ } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) {
+ size_t size = (ct->range_bits + 7) >> 3;
+ st->buf = (uint8_t *)MALLOC(1 + size + 1);
+ if(!st->buf) ASN__DECODE_FAILED;
+ st->size = size;
+ }
+ }
+
+ /* X.691, #12.2.2 */
+ if(ct && ct->flags != APC_UNCONSTRAINED) {
+ /* #10.5.6 */
+ ASN_DEBUG("Integer with range %d bits", ct->range_bits);
+ if(ct->range_bits >= 0) {
+ if (ct->range_bits > 16) {
+ int max_range_bytes = (ct->range_bits >> 3) +
+ (((ct->range_bits % 8) > 0) ? 1 : 0);
+ int length = 0, i;
+ long value = 0;
+
+ for (i = 1; ; i++) {
+ int upper = 1 << i;
+ if (upper >= max_range_bytes)
+ break;
+ }
+ ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits,
+ max_range_bytes, i);
+
+ if ((length = per_get_few_bits(pd, i)) < 0)
+ ASN__DECODE_FAILED;
+
+ /* X.691 #12.2.6 length determinant + lb (1) */
+ length += 1;
+ ASN_DEBUG("Got length %d", length);
+ if (aper_get_align(pd) != 0)
+ ASN__DECODE_FAILED;
+ while (length--) {
+ int buf = per_get_few_bits(pd, 8);
+ if (buf < 0)
+ ASN__DECODE_FAILED;
+ value += (((long)buf) << (8 * length));
+ }
+
+ value += ct->lower_bound;
+ if((specs && specs->field_unsigned)
+ ? asn_uint642INTEGER(st, (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;
+ 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/src/asn/asn1c/INTEGER.h b/src/asn/asn1c/INTEGER.h
new file mode 100644
index 0000000..f776c07
--- /dev/null
+++ b/src/asn/asn1c/INTEGER.h
@@ -0,0 +1,108 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _INTEGER_H_
+#define _INTEGER_H_
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t INTEGER_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_INTEGER;
+extern asn_TYPE_operation_t asn_OP_INTEGER;
+
+/* Map with to integer value association */
+typedef struct asn_INTEGER_enum_map_s {
+ long nat_value; /* associated native integer value */
+ size_t enum_len; /* strlen("tag") */
+ const char *enum_name; /* "tag" */
+} asn_INTEGER_enum_map_t;
+
+/* This type describes an enumeration for INTEGER and ENUMERATED types */
+typedef struct asn_INTEGER_specifics_s {
+ const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */
+ const unsigned int *enum2value; /* "tag" => N; sorted by tag */
+ int map_count; /* Elements in either map */
+ int extension; /* This map is extensible */
+ int strict_enumeration; /* Enumeration set is fixed */
+ int field_width; /* Size of native integer */
+ int field_unsigned; /* Signed=0, unsigned=1 */
+} asn_INTEGER_specifics_t;
+
+#define INTEGER_free ASN__PRIMITIVE_TYPE_free
+#define INTEGER_decode_ber ber_decode_primitive
+#define INTEGER_constraint asn_generic_no_constraint
+asn_struct_print_f INTEGER_print;
+asn_struct_compare_f INTEGER_compare;
+der_type_encoder_f INTEGER_encode_der;
+xer_type_decoder_f INTEGER_decode_xer;
+xer_type_encoder_f INTEGER_encode_xer;
+oer_type_decoder_f INTEGER_decode_oer;
+oer_type_encoder_f INTEGER_encode_oer;
+per_type_decoder_f INTEGER_decode_uper;
+per_type_encoder_f INTEGER_encode_uper;
+per_type_decoder_f INTEGER_decode_aper;
+per_type_encoder_f INTEGER_encode_aper;
+asn_random_fill_f INTEGER_random_fill;
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+/*
+ * Natiwe size-independent conversion of native integers to/from INTEGER.
+ * (l_size) is in bytes.
+ * Returns 0 if it was possible to convert, -1 otherwise.
+ * -1/EINVAL: Mandatory argument missing
+ * -1/ERANGE: Value encoded is out of range for long representation
+ * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()).
+ */
+int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l);
+int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l);
+int asn_imax2INTEGER(INTEGER_t *i, intmax_t l);
+int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l);
+
+/*
+ * Size-specific conversion helpers.
+ */
+int asn_INTEGER2long(const INTEGER_t *i, long *l);
+int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l);
+int asn_long2INTEGER(INTEGER_t *i, long l);
+int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l);
+int asn_int642INTEGER(INTEGER_t *i, int64_t l);
+int asn_uint642INTEGER(INTEGER_t *i, uint64_t l);
+
+/* A version of strtol/strtoimax(3) with nicer error reporting. */
+enum asn_strtox_result_e {
+ ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */
+ ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */
+ ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */
+ ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */
+ ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */
+};
+enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end,
+ long *l);
+enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end,
+ unsigned long *l);
+enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end,
+ intmax_t *l);
+enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end,
+ uintmax_t *l);
+
+/*
+ * Convert the integer value into the corresponding enumeration map entry.
+ */
+const asn_INTEGER_enum_map_t *INTEGER_map_value2enum(
+ const asn_INTEGER_specifics_t *specs, long value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INTEGER_H_ */
diff --git a/src/asn/asn1c/Makefile.am.libasncodec b/src/asn/asn1c/Makefile.am.libasncodec
new file mode 100644
index 0000000..850c28a
--- /dev/null
+++ b/src/asn/asn1c/Makefile.am.libasncodec
@@ -0,0 +1,2231 @@
+ASN_MODULE_SRCS= \
+ ngap/ASN_NGAP_Criticality.c \
+ ngap/ASN_NGAP_Presence.c \
+ ngap/ASN_NGAP_PrivateIE-ID.c \
+ ngap/ASN_NGAP_ProcedureCode.c \
+ ngap/ASN_NGAP_ProtocolExtensionID.c \
+ ngap/ASN_NGAP_ProtocolIE-ID.c \
+ ngap/ASN_NGAP_TriggeringMessage.c \
+ ngap/ASN_NGAP_ProtocolIE-Container.c \
+ ngap/ASN_NGAP_ProtocolIE-SingleContainer.c \
+ ngap/ASN_NGAP_ProtocolIE-Field.c \
+ ngap/ASN_NGAP_ProtocolIE-ContainerPair.c \
+ ngap/ASN_NGAP_ProtocolIE-FieldPair.c \
+ ngap/ASN_NGAP_ProtocolIE-ContainerList.c \
+ ngap/ASN_NGAP_ProtocolIE-ContainerPairList.c \
+ ngap/ASN_NGAP_ProtocolExtensionContainer.c \
+ ngap/ASN_NGAP_ProtocolExtensionField.c \
+ ngap/ASN_NGAP_PrivateIE-Container.c \
+ ngap/ASN_NGAP_PrivateIE-Field.c \
+ ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOList.c \
+ ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOItem.c \
+ ngap/ASN_NGAP_AdditionalQosFlowInformation.c \
+ ngap/ASN_NGAP_AllocationAndRetentionPriority.c \
+ ngap/ASN_NGAP_Allowed-CAG-List-per-PLMN.c \
+ ngap/ASN_NGAP_AllowedNSSAI.c \
+ ngap/ASN_NGAP_AllowedNSSAI-Item.c \
+ ngap/ASN_NGAP_Allowed-PNI-NPN-List.c \
+ ngap/ASN_NGAP_Allowed-PNI-NPN-Item.c \
+ ngap/ASN_NGAP_AllowedTACs.c \
+ ngap/ASN_NGAP_AlternativeQoSParaSetIndex.c \
+ ngap/ASN_NGAP_AlternativeQoSParaSetNotifyIndex.c \
+ ngap/ASN_NGAP_AlternativeQoSParaSetList.c \
+ ngap/ASN_NGAP_AlternativeQoSParaSetItem.c \
+ ngap/ASN_NGAP_AMFName.c \
+ ngap/ASN_NGAP_AMFNameVisibleString.c \
+ ngap/ASN_NGAP_AMFNameUTF8String.c \
+ ngap/ASN_NGAP_AMFPagingTarget.c \
+ ngap/ASN_NGAP_AMFPointer.c \
+ ngap/ASN_NGAP_AMFRegionID.c \
+ ngap/ASN_NGAP_AMFSetID.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationSetupList.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationSetupItem.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationToAddList.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationToAddItem.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationToRemoveList.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationToRemoveItem.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationToUpdateList.c \
+ ngap/ASN_NGAP_AMF-TNLAssociationToUpdateItem.c \
+ ngap/ASN_NGAP_AMF-UE-NGAP-ID.c \
+ ngap/ASN_NGAP_AreaOfInterest.c \
+ ngap/ASN_NGAP_AreaOfInterestCellList.c \
+ ngap/ASN_NGAP_AreaOfInterestCellItem.c \
+ ngap/ASN_NGAP_AreaOfInterestList.c \
+ ngap/ASN_NGAP_AreaOfInterestItem.c \
+ ngap/ASN_NGAP_AreaOfInterestRANNodeList.c \
+ ngap/ASN_NGAP_AreaOfInterestRANNodeItem.c \
+ ngap/ASN_NGAP_AreaOfInterestTAIList.c \
+ ngap/ASN_NGAP_AreaOfInterestTAIItem.c \
+ ngap/ASN_NGAP_AssistanceDataForPaging.c \
+ ngap/ASN_NGAP_AssistanceDataForRecommendedCells.c \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestList.c \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestItem.c \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestList.c \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestItem.c \
+ ngap/ASN_NGAP_AssociatedQosFlowList.c \
+ ngap/ASN_NGAP_AssociatedQosFlowItem.c \
+ ngap/ASN_NGAP_AuthenticatedIndication.c \
+ ngap/ASN_NGAP_AveragingWindow.c \
+ ngap/ASN_NGAP_AreaScopeOfMDT-NR.c \
+ ngap/ASN_NGAP_AreaScopeOfMDT-EUTRA.c \
+ ngap/ASN_NGAP_AreaScopeOfNeighCellsList.c \
+ ngap/ASN_NGAP_AreaScopeOfNeighCellsItem.c \
+ ngap/ASN_NGAP_AreaScopeOfQMC.c \
+ ngap/ASN_NGAP_AvailableRANVisibleQoEMetrics.c \
+ ngap/ASN_NGAP_BeamMeasurementsReportConfiguration.c \
+ ngap/ASN_NGAP_BeamMeasurementsReportQuantity.c \
+ ngap/ASN_NGAP_BitRate.c \
+ ngap/ASN_NGAP_BroadcastCancelledAreaList.c \
+ ngap/ASN_NGAP_BroadcastCompletedAreaList.c \
+ ngap/ASN_NGAP_BroadcastPLMNList.c \
+ ngap/ASN_NGAP_BroadcastPLMNItem.c \
+ ngap/ASN_NGAP_BluetoothMeasurementConfiguration.c \
+ ngap/ASN_NGAP_BluetoothMeasConfigNameList.c \
+ ngap/ASN_NGAP_BluetoothMeasConfigNameItem.c \
+ ngap/ASN_NGAP_BluetoothMeasConfig.c \
+ ngap/ASN_NGAP_BluetoothName.c \
+ ngap/ASN_NGAP_BurstArrivalTime.c \
+ ngap/ASN_NGAP_CAG-ID.c \
+ ngap/ASN_NGAP_CancelAllWarningMessages.c \
+ ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA.c \
+ ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA-Item.c \
+ ngap/ASN_NGAP_CancelledCellsInEAI-NR.c \
+ ngap/ASN_NGAP_CancelledCellsInEAI-NR-Item.c \
+ ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA.c \
+ ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA-Item.c \
+ ngap/ASN_NGAP_CancelledCellsInTAI-NR.c \
+ ngap/ASN_NGAP_CancelledCellsInTAI-NR-Item.c \
+ ngap/ASN_NGAP_CandidateCellList.c \
+ ngap/ASN_NGAP_CandidateCellItem.c \
+ ngap/ASN_NGAP_CandidateCell.c \
+ ngap/ASN_NGAP_CandidateCellID.c \
+ ngap/ASN_NGAP_CandidatePCI.c \
+ ngap/ASN_NGAP_Cause.c \
+ ngap/ASN_NGAP_CauseMisc.c \
+ ngap/ASN_NGAP_CauseNas.c \
+ ngap/ASN_NGAP_CauseProtocol.c \
+ ngap/ASN_NGAP_CauseRadioNetwork.c \
+ ngap/ASN_NGAP_CauseTransport.c \
+ ngap/ASN_NGAP_Cell-CAGInformation.c \
+ ngap/ASN_NGAP_CellCAGList.c \
+ ngap/ASN_NGAP_CellIDBroadcastEUTRA.c \
+ ngap/ASN_NGAP_CellIDBroadcastEUTRA-Item.c \
+ ngap/ASN_NGAP_CellIDBroadcastNR.c \
+ ngap/ASN_NGAP_CellIDBroadcastNR-Item.c \
+ ngap/ASN_NGAP_CellIDCancelledEUTRA.c \
+ ngap/ASN_NGAP_CellIDCancelledEUTRA-Item.c \
+ ngap/ASN_NGAP_CellIDCancelledNR.c \
+ ngap/ASN_NGAP_CellIDCancelledNR-Item.c \
+ ngap/ASN_NGAP_CellIDListForRestart.c \
+ ngap/ASN_NGAP_CellSize.c \
+ ngap/ASN_NGAP_CellType.c \
+ ngap/ASN_NGAP_CEmodeBSupport-Indicator.c \
+ ngap/ASN_NGAP_CEmodeBrestricted.c \
+ ngap/ASN_NGAP_CNAssistedRANTuning.c \
+ ngap/ASN_NGAP_CNsubgroupID.c \
+ ngap/ASN_NGAP_CNTypeRestrictionsForEquivalent.c \
+ ngap/ASN_NGAP_CNTypeRestrictionsForEquivalentItem.c \
+ ngap/ASN_NGAP_CNTypeRestrictionsForServing.c \
+ ngap/ASN_NGAP_CommonNetworkInstance.c \
+ ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA.c \
+ ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA-Item.c \
+ ngap/ASN_NGAP_CompletedCellsInEAI-NR.c \
+ ngap/ASN_NGAP_CompletedCellsInEAI-NR-Item.c \
+ ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA.c \
+ ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA-Item.c \
+ ngap/ASN_NGAP_CompletedCellsInTAI-NR.c \
+ ngap/ASN_NGAP_CompletedCellsInTAI-NR-Item.c \
+ ngap/ASN_NGAP_ConcurrentWarningMessageInd.c \
+ ngap/ASN_NGAP_ConfidentialityProtectionIndication.c \
+ ngap/ASN_NGAP_ConfidentialityProtectionResult.c \
+ ngap/ASN_NGAP_ConfiguredTACIndication.c \
+ ngap/ASN_NGAP_CoreNetworkAssistanceInformationForInactive.c \
+ ngap/ASN_NGAP_COUNTValueForPDCP-SN12.c \
+ ngap/ASN_NGAP_COUNTValueForPDCP-SN18.c \
+ ngap/ASN_NGAP_CoverageEnhancementLevel.c \
+ ngap/ASN_NGAP_CPTransportLayerInformation.c \
+ ngap/ASN_NGAP_CriticalityDiagnostics.c \
+ ngap/ASN_NGAP_CriticalityDiagnostics-IE-List.c \
+ ngap/ASN_NGAP_CriticalityDiagnostics-IE-Item.c \
+ ngap/ASN_NGAP_CellBasedMDT-NR.c \
+ ngap/ASN_NGAP_CellIdListforMDT-NR.c \
+ ngap/ASN_NGAP_CellBasedMDT-EUTRA.c \
+ ngap/ASN_NGAP_CellBasedQMC.c \
+ ngap/ASN_NGAP_CellIdListforQMC.c \
+ ngap/ASN_NGAP_CellIdListforMDT-EUTRA.c \
+ ngap/ASN_NGAP_DataCodingScheme.c \
+ ngap/ASN_NGAP_DataForwardingAccepted.c \
+ ngap/ASN_NGAP_DataForwardingNotPossible.c \
+ ngap/ASN_NGAP_DataForwardingResponseDRBList.c \
+ ngap/ASN_NGAP_DataForwardingResponseDRBItem.c \
+ ngap/ASN_NGAP_DAPSRequestInfo.c \
+ ngap/ASN_NGAP_DAPSResponseInfoList.c \
+ ngap/ASN_NGAP_DAPSResponseInfoItem.c \
+ ngap/ASN_NGAP_DAPSResponseInfo.c \
+ ngap/ASN_NGAP_DataForwardingResponseERABList.c \
+ ngap/ASN_NGAP_DataForwardingResponseERABListItem.c \
+ ngap/ASN_NGAP_DelayCritical.c \
+ ngap/ASN_NGAP_DL-CP-SecurityInformation.c \
+ ngap/ASN_NGAP_DL-NAS-MAC.c \
+ ngap/ASN_NGAP_DLForwarding.c \
+ ngap/ASN_NGAP_DL-NGU-TNLInformationReused.c \
+ ngap/ASN_NGAP_DirectForwardingPathAvailability.c \
+ ngap/ASN_NGAP_DRB-ID.c \
+ ngap/ASN_NGAP_DRBsSubjectToStatusTransferList.c \
+ ngap/ASN_NGAP_DRBsSubjectToStatusTransferItem.c \
+ ngap/ASN_NGAP_DRBStatusDL.c \
+ ngap/ASN_NGAP_DRBStatusDL12.c \
+ ngap/ASN_NGAP_DRBStatusDL18.c \
+ ngap/ASN_NGAP_DRBStatusUL.c \
+ ngap/ASN_NGAP_DRBStatusUL12.c \
+ ngap/ASN_NGAP_DRBStatusUL18.c \
+ ngap/ASN_NGAP_DRBsToQosFlowsMappingList.c \
+ ngap/ASN_NGAP_DRBsToQosFlowsMappingItem.c \
+ ngap/ASN_NGAP_Dynamic5QIDescriptor.c \
+ ngap/ASN_NGAP_EarlyMeasurement.c \
+ ngap/ASN_NGAP_EarlyStatusTransfer-TransparentContainer.c \
+ ngap/ASN_NGAP_ProcedureStageChoice.c \
+ ngap/ASN_NGAP_FirstDLCount.c \
+ ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-List.c \
+ ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-Item.c \
+ ngap/ASN_NGAP_EDT-Session.c \
+ ngap/ASN_NGAP_EmergencyAreaID.c \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA.c \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA-Item.c \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR.c \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR-Item.c \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA.c \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA-Item.c \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledNR.c \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledNR-Item.c \
+ ngap/ASN_NGAP_EmergencyAreaIDList.c \
+ ngap/ASN_NGAP_EmergencyAreaIDListForRestart.c \
+ ngap/ASN_NGAP_EmergencyFallbackIndicator.c \
+ ngap/ASN_NGAP_EmergencyFallbackRequestIndicator.c \
+ ngap/ASN_NGAP_EmergencyServiceTargetCN.c \
+ ngap/ASN_NGAP_ENB-ID.c \
+ ngap/ASN_NGAP_Enhanced-CoverageRestriction.c \
+ ngap/ASN_NGAP_Extended-ConnectedTime.c \
+ ngap/ASN_NGAP_EN-DCSONConfigurationTransfer.c \
+ ngap/ASN_NGAP_EndpointIPAddressAndPort.c \
+ ngap/ASN_NGAP_EndIndication.c \
+ ngap/ASN_NGAP_EquivalentPLMNs.c \
+ ngap/ASN_NGAP_EPS-TAC.c \
+ ngap/ASN_NGAP_EPS-TAI.c \
+ ngap/ASN_NGAP_E-RAB-ID.c \
+ ngap/ASN_NGAP_E-RABInformationList.c \
+ ngap/ASN_NGAP_E-RABInformationItem.c \
+ ngap/ASN_NGAP_EUTRACellIdentity.c \
+ ngap/ASN_NGAP_EUTRA-CGI.c \
+ ngap/ASN_NGAP_EUTRA-CGIList.c \
+ ngap/ASN_NGAP_EUTRA-CGIListForWarning.c \
+ ngap/ASN_NGAP_EUTRA-PagingeDRXInformation.c \
+ ngap/ASN_NGAP_EUTRA-Paging-eDRX-Cycle.c \
+ ngap/ASN_NGAP_EUTRA-Paging-Time-Window.c \
+ ngap/ASN_NGAP_EUTRAencryptionAlgorithms.c \
+ ngap/ASN_NGAP_EUTRAintegrityProtectionAlgorithms.c \
+ ngap/ASN_NGAP_EventType.c \
+ ngap/ASN_NGAP_ExcessPacketDelayThresholdConfiguration.c \
+ ngap/ASN_NGAP_ExcessPacketDelayThresholdItem.c \
+ ngap/ASN_NGAP_ExcessPacketDelayThresholdValue.c \
+ ngap/ASN_NGAP_ExpectedActivityPeriod.c \
+ ngap/ASN_NGAP_ExpectedHOInterval.c \
+ ngap/ASN_NGAP_ExpectedIdlePeriod.c \
+ ngap/ASN_NGAP_ExpectedUEActivityBehaviour.c \
+ ngap/ASN_NGAP_ExpectedUEBehaviour.c \
+ ngap/ASN_NGAP_ExpectedUEMobility.c \
+ ngap/ASN_NGAP_ExpectedUEMovingTrajectory.c \
+ ngap/ASN_NGAP_ExpectedUEMovingTrajectoryItem.c \
+ ngap/ASN_NGAP_Extended-AMFName.c \
+ ngap/ASN_NGAP_ExtendedPacketDelayBudget.c \
+ ngap/ASN_NGAP_Extended-RANNodeName.c \
+ ngap/ASN_NGAP_ExtendedRATRestrictionInformation.c \
+ ngap/ASN_NGAP_ExtendedRNC-ID.c \
+ ngap/ASN_NGAP_ExtendedSliceSupportList.c \
+ ngap/ASN_NGAP_ExtendedUEIdentityIndexValue.c \
+ ngap/ASN_NGAP_EventTrigger.c \
+ ngap/ASN_NGAP_EventL1LoggedMDTConfig.c \
+ ngap/ASN_NGAP_MeasurementThresholdL1LoggedMDT.c \
+ ngap/ASN_NGAP_FailureIndication.c \
+ ngap/ASN_NGAP_FiveG-ProSeAuthorized.c \
+ ngap/ASN_NGAP_FiveGProSeDirectDiscovery.c \
+ ngap/ASN_NGAP_FiveGProSeDirectCommunication.c \
+ ngap/ASN_NGAP_FiveGProSeLayer2UEtoNetworkRelay.c \
+ ngap/ASN_NGAP_FiveGProSeLayer3UEtoNetworkRelay.c \
+ ngap/ASN_NGAP_FiveGProSeLayer2RemoteUE.c \
+ ngap/ASN_NGAP_FiveG-ProSePC5QoSParameters.c \
+ ngap/ASN_NGAP_FiveGProSePC5QoSFlowList.c \
+ ngap/ASN_NGAP_FiveGProSePC5QoSFlowItem.c \
+ ngap/ASN_NGAP_FiveGProSePC5FlowBitRates.c \
+ ngap/ASN_NGAP_FiveG-S-TMSI.c \
+ ngap/ASN_NGAP_FiveG-TMSI.c \
+ ngap/ASN_NGAP_FiveQI.c \
+ ngap/ASN_NGAP_ForbiddenAreaInformation.c \
+ ngap/ASN_NGAP_ForbiddenAreaInformation-Item.c \
+ ngap/ASN_NGAP_ForbiddenTACs.c \
+ ngap/ASN_NGAP_FromEUTRANtoNGRAN.c \
+ ngap/ASN_NGAP_FromNGRANtoEUTRAN.c \
+ ngap/ASN_NGAP_GBR-QosInformation.c \
+ ngap/ASN_NGAP_GlobalCable-ID.c \
+ ngap/ASN_NGAP_GlobalCable-ID-new.c \
+ ngap/ASN_NGAP_GlobalENB-ID.c \
+ ngap/ASN_NGAP_GlobalGNB-ID.c \
+ ngap/ASN_NGAP_GlobalN3IWF-ID.c \
+ ngap/ASN_NGAP_GlobalLine-ID.c \
+ ngap/ASN_NGAP_GlobalLineIdentity.c \
+ ngap/ASN_NGAP_GlobalNgENB-ID.c \
+ ngap/ASN_NGAP_GlobalRANNodeID.c \
+ ngap/ASN_NGAP_GlobalTNGF-ID.c \
+ ngap/ASN_NGAP_GlobalTWIF-ID.c \
+ ngap/ASN_NGAP_GlobalW-AGF-ID.c \
+ ngap/ASN_NGAP_GNB-ID.c \
+ ngap/ASN_NGAP_GTP-TEID.c \
+ ngap/ASN_NGAP_GTPTunnel.c \
+ ngap/ASN_NGAP_GUAMI.c \
+ ngap/ASN_NGAP_GUAMIType.c \
+ ngap/ASN_NGAP_HandoverCommandTransfer.c \
+ ngap/ASN_NGAP_HandoverFlag.c \
+ ngap/ASN_NGAP_HandoverPreparationUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_HandoverRequestAcknowledgeTransfer.c \
+ ngap/ASN_NGAP_HandoverRequiredTransfer.c \
+ ngap/ASN_NGAP_HandoverResourceAllocationUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_HandoverType.c \
+ ngap/ASN_NGAP_HashedUEIdentityIndexValue.c \
+ ngap/ASN_NGAP_HFCNode-ID.c \
+ ngap/ASN_NGAP_HFCNode-ID-new.c \
+ ngap/ASN_NGAP_HOReport.c \
+ ngap/ASN_NGAP_Hysteresis.c \
+ ngap/ASN_NGAP_IAB-Authorized.c \
+ ngap/ASN_NGAP_IAB-Supported.c \
+ ngap/ASN_NGAP_IABNodeIndication.c \
+ ngap/ASN_NGAP_IMSVoiceSupportIndicator.c \
+ ngap/ASN_NGAP_IndexToRFSP.c \
+ ngap/ASN_NGAP_InfoOnRecommendedCellsAndRANNodesForPaging.c \
+ ngap/ASN_NGAP_IntegrityProtectionIndication.c \
+ ngap/ASN_NGAP_IntegrityProtectionResult.c \
+ ngap/ASN_NGAP_IntendedNumberOfPagingAttempts.c \
+ ngap/ASN_NGAP_InterfacesToTrace.c \
+ ngap/ASN_NGAP_ImmediateMDTNr.c \
+ ngap/ASN_NGAP_InterSystemFailureIndication.c \
+ ngap/ASN_NGAP_IntersystemSONConfigurationTransfer.c \
+ ngap/ASN_NGAP_IntersystemSONTransferType.c \
+ ngap/ASN_NGAP_IntersystemSONeNBID.c \
+ ngap/ASN_NGAP_IntersystemSONNGRANnodeID.c \
+ ngap/ASN_NGAP_IntersystemSONInformation.c \
+ ngap/ASN_NGAP_IntersystemSONInformationRequest.c \
+ ngap/ASN_NGAP_IntersystemCellActivationRequest.c \
+ ngap/ASN_NGAP_CellsToActivateList.c \
+ ngap/ASN_NGAP_IntersystemResourceStatusRequest.c \
+ ngap/ASN_NGAP_ReportingSystem.c \
+ ngap/ASN_NGAP_EUTRAN-ReportingSystemIEs.c \
+ ngap/ASN_NGAP_NGRAN-ReportingSystemIEs.c \
+ ngap/ASN_NGAP_EUTRAN-CellToReportList.c \
+ ngap/ASN_NGAP_EUTRAN-CellToReportItem.c \
+ ngap/ASN_NGAP_NGRAN-CellToReportList.c \
+ ngap/ASN_NGAP_NGRAN-CellToReportItem.c \
+ ngap/ASN_NGAP_ReportCharacteristics.c \
+ ngap/ASN_NGAP_ReportType.c \
+ ngap/ASN_NGAP_EventBasedReportingIEs.c \
+ ngap/ASN_NGAP_IntersystemResourceThreshold.c \
+ ngap/ASN_NGAP_NumberOfMeasurementReportingLevels.c \
+ ngap/ASN_NGAP_PeriodicReportingIEs.c \
+ ngap/ASN_NGAP_ReportingPeriodicity.c \
+ ngap/ASN_NGAP_IntersystemSONInformationReply.c \
+ ngap/ASN_NGAP_IntersystemCellActivationReply.c \
+ ngap/ASN_NGAP_ActivatedCellList.c \
+ ngap/ASN_NGAP_IntersystemResourceStatusReply.c \
+ ngap/ASN_NGAP_IntersystemSONInformationReport.c \
+ ngap/ASN_NGAP_IntersystemCellStateIndication.c \
+ ngap/ASN_NGAP_NotificationCellList.c \
+ ngap/ASN_NGAP_NotificationCell-Item.c \
+ ngap/ASN_NGAP_IntersystemResourceStatusReport.c \
+ ngap/ASN_NGAP_ResourceStatusReportingSystem.c \
+ ngap/ASN_NGAP_EUTRAN-ReportingStatusIEs.c \
+ ngap/ASN_NGAP_EUTRAN-CellReportList.c \
+ ngap/ASN_NGAP_EUTRAN-CellReportItem.c \
+ ngap/ASN_NGAP_EUTRAN-CompositeAvailableCapacityGroup.c \
+ ngap/ASN_NGAP_CompositeAvailableCapacity.c \
+ ngap/ASN_NGAP_EUTRAN-NumberOfActiveUEs.c \
+ ngap/ASN_NGAP_EUTRAN-RadioResourceStatus.c \
+ ngap/ASN_NGAP_NGRAN-ReportingStatusIEs.c \
+ ngap/ASN_NGAP_NGRAN-CellReportList.c \
+ ngap/ASN_NGAP_NGRAN-CellReportItem.c \
+ ngap/ASN_NGAP_NGRAN-NumberOfActiveUEs.c \
+ ngap/ASN_NGAP_NGRAN-NoofRRCConnections.c \
+ ngap/ASN_NGAP_NGRAN-RadioResourceStatus.c \
+ ngap/ASN_NGAP_InterSystemHOReport.c \
+ ngap/ASN_NGAP_InterSystemHandoverReportType.c \
+ ngap/ASN_NGAP_IntersystemUnnecessaryHO.c \
+ ngap/ASN_NGAP_LAC.c \
+ ngap/ASN_NGAP_LAI.c \
+ ngap/ASN_NGAP_LastVisitedCellInformation.c \
+ ngap/ASN_NGAP_LastVisitedCellItem.c \
+ ngap/ASN_NGAP_LastVisitedEUTRANCellInformation.c \
+ ngap/ASN_NGAP_LastVisitedGERANCellInformation.c \
+ ngap/ASN_NGAP_LastVisitedNGRANCellInformation.c \
+ ngap/ASN_NGAP_LastVisitedPSCellList.c \
+ ngap/ASN_NGAP_LastVisitedPSCellInformation.c \
+ ngap/ASN_NGAP_LastVisitedUTRANCellInformation.c \
+ ngap/ASN_NGAP_LineType.c \
+ ngap/ASN_NGAP_LocationReportingAdditionalInfo.c \
+ ngap/ASN_NGAP_LocationReportingReferenceID.c \
+ ngap/ASN_NGAP_LocationReportingRequestType.c \
+ ngap/ASN_NGAP_LoggedMDTNr.c \
+ ngap/ASN_NGAP_LoggingInterval.c \
+ ngap/ASN_NGAP_LoggingDuration.c \
+ ngap/ASN_NGAP_Links-to-log.c \
+ ngap/ASN_NGAP_LoggedMDTTrigger.c \
+ ngap/ASN_NGAP_LTEM-Indication.c \
+ ngap/ASN_NGAP_LTEUERLFReportContainer.c \
+ ngap/ASN_NGAP_LTEV2XServicesAuthorized.c \
+ ngap/ASN_NGAP_LTEUESidelinkAggregateMaximumBitrate.c \
+ ngap/ASN_NGAP_MaskedIMEISV.c \
+ ngap/ASN_NGAP_MaximumDataBurstVolume.c \
+ ngap/ASN_NGAP_MessageIdentifier.c \
+ ngap/ASN_NGAP_MaximumIntegrityProtectedDataRate.c \
+ ngap/ASN_NGAP_MBS-AreaSessionID.c \
+ ngap/ASN_NGAP_MBS-DataForwardingResponseMRBList.c \
+ ngap/ASN_NGAP_MBS-DataForwardingResponseMRBItem.c \
+ ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestList.c \
+ ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestItem.c \
+ ngap/ASN_NGAP_MBS-QoSFlowList.c \
+ ngap/ASN_NGAP_MRB-ProgressInformation.c \
+ ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupList.c \
+ ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupItem.c \
+ ngap/ASN_NGAP_MBS-ServiceArea.c \
+ ngap/ASN_NGAP_MBS-ServiceAreaInformationList.c \
+ ngap/ASN_NGAP_MBS-ServiceAreaInformationItem.c \
+ ngap/ASN_NGAP_MBS-ServiceAreaInformation.c \
+ ngap/ASN_NGAP_MBS-ServiceAreaCellList.c \
+ ngap/ASN_NGAP_MBS-ServiceAreaTAIList.c \
+ ngap/ASN_NGAP_MBS-SessionID.c \
+ ngap/ASN_NGAP_MBSSessionFailedtoSetupList.c \
+ ngap/ASN_NGAP_MBSSessionFailedtoSetupItem.c \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetList.c \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetItem.c \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceList.c \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceItem.c \
+ ngap/ASN_NGAP_MBSSessionSetupOrModFailureTransfer.c \
+ ngap/ASN_NGAP_MBSSessionSetupResponseList.c \
+ ngap/ASN_NGAP_MBSSessionSetupResponseItem.c \
+ ngap/ASN_NGAP_MBSSessionSetupOrModRequestTransfer.c \
+ ngap/ASN_NGAP_MBS-SessionFSAIDList.c \
+ ngap/ASN_NGAP_MBS-SessionFSAID.c \
+ ngap/ASN_NGAP_MBSSessionReleaseResponseTransfer.c \
+ ngap/ASN_NGAP_MBSSessionSetupOrModResponseTransfer.c \
+ ngap/ASN_NGAP_MBS-SupportIndicator.c \
+ ngap/ASN_NGAP_MBS-SessionTNLInfo5GC.c \
+ ngap/ASN_NGAP_MBS-SessionTNLInfo5GCList.c \
+ ngap/ASN_NGAP_MBS-SessionTNLInfo5GCItem.c \
+ ngap/ASN_NGAP_MBS-SessionTNLInfoNGRAN.c \
+ ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANList.c \
+ ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANItem.c \
+ ngap/ASN_NGAP_MBS-DistributionReleaseRequestTransfer.c \
+ ngap/ASN_NGAP_MBS-DistributionSetupRequestTransfer.c \
+ ngap/ASN_NGAP_MBS-DistributionSetupResponseTransfer.c \
+ ngap/ASN_NGAP_MBS-DistributionSetupUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_MBSSessionSetupRequestList.c \
+ ngap/ASN_NGAP_MBSSessionSetupRequestItem.c \
+ ngap/ASN_NGAP_MBSSessionSetuporModifyRequestList.c \
+ ngap/ASN_NGAP_MBSSessionSetuporModifyRequestItem.c \
+ ngap/ASN_NGAP_MBSSessionToReleaseList.c \
+ ngap/ASN_NGAP_MBSSessionToReleaseItem.c \
+ ngap/ASN_NGAP_MBSSessionStatus.c \
+ ngap/ASN_NGAP_MicoAllPLMN.c \
+ ngap/ASN_NGAP_MICOModeIndication.c \
+ ngap/ASN_NGAP_MobilityInformation.c \
+ ngap/ASN_NGAP_ExtendedMobilityInformation.c \
+ ngap/ASN_NGAP_MobilityRestrictionList.c \
+ ngap/ASN_NGAP_MDT-AlignmentInfo.c \
+ ngap/ASN_NGAP_MDTPLMNList.c \
+ ngap/ASN_NGAP_MDTPLMNModificationList.c \
+ ngap/ASN_NGAP_MDT-Configuration.c \
+ ngap/ASN_NGAP_MDT-Configuration-NR.c \
+ ngap/ASN_NGAP_MDT-Configuration-EUTRA.c \
+ ngap/ASN_NGAP_MDT-Activation.c \
+ ngap/ASN_NGAP_MDTModeNr.c \
+ ngap/ASN_NGAP_MDTModeEutra.c \
+ ngap/ASN_NGAP_MeasurementsToActivate.c \
+ ngap/ASN_NGAP_MRB-ID.c \
+ ngap/ASN_NGAP_MulticastSessionActivationRequestTransfer.c \
+ ngap/ASN_NGAP_MulticastSessionDeactivationRequestTransfer.c \
+ ngap/ASN_NGAP_MulticastSessionUpdateRequestTransfer.c \
+ ngap/ASN_NGAP_MulticastGroupPagingAreaList.c \
+ ngap/ASN_NGAP_MulticastGroupPagingAreaItem.c \
+ ngap/ASN_NGAP_MBS-AreaTAIList.c \
+ ngap/ASN_NGAP_MulticastGroupPagingArea.c \
+ ngap/ASN_NGAP_UE-PagingList.c \
+ ngap/ASN_NGAP_UE-PagingItem.c \
+ ngap/ASN_NGAP_M1Configuration.c \
+ ngap/ASN_NGAP_IncludeBeamMeasurementsIndication.c \
+ ngap/ASN_NGAP_MaxNrofRS-IndexesToReport.c \
+ ngap/ASN_NGAP_M1ReportingTrigger.c \
+ ngap/ASN_NGAP_M1ThresholdEventA2.c \
+ ngap/ASN_NGAP_M1ThresholdType.c \
+ ngap/ASN_NGAP_M1PeriodicReporting.c \
+ ngap/ASN_NGAP_M4Configuration.c \
+ ngap/ASN_NGAP_M4ReportAmountMDT.c \
+ ngap/ASN_NGAP_M4period.c \
+ ngap/ASN_NGAP_M5Configuration.c \
+ ngap/ASN_NGAP_M5ReportAmountMDT.c \
+ ngap/ASN_NGAP_M5period.c \
+ ngap/ASN_NGAP_M6Configuration.c \
+ ngap/ASN_NGAP_M6ReportAmountMDT.c \
+ ngap/ASN_NGAP_M6report-Interval.c \
+ ngap/ASN_NGAP_M7Configuration.c \
+ ngap/ASN_NGAP_M7ReportAmountMDT.c \
+ ngap/ASN_NGAP_M7period.c \
+ ngap/ASN_NGAP_MDT-Location-Info.c \
+ ngap/ASN_NGAP_MDT-Location-Information.c \
+ ngap/ASN_NGAP_N3IWF-ID.c \
+ ngap/ASN_NGAP_NAS-PDU.c \
+ ngap/ASN_NGAP_NASSecurityParametersFromNGRAN.c \
+ ngap/ASN_NGAP_NB-IoT-DefaultPagingDRX.c \
+ ngap/ASN_NGAP_NB-IoT-PagingDRX.c \
+ ngap/ASN_NGAP_NB-IoT-Paging-eDRXCycle.c \
+ ngap/ASN_NGAP_NB-IoT-Paging-TimeWindow.c \
+ ngap/ASN_NGAP_NB-IoT-Paging-eDRXInfo.c \
+ ngap/ASN_NGAP_NB-IoT-UEPriority.c \
+ ngap/ASN_NGAP_NetworkInstance.c \
+ ngap/ASN_NGAP_NewSecurityContextInd.c \
+ ngap/ASN_NGAP_NextHopChainingCount.c \
+ ngap/ASN_NGAP_NextPagingAreaScope.c \
+ ngap/ASN_NGAP_NGAPIESupportInformationRequestList.c \
+ ngap/ASN_NGAP_NGAPIESupportInformationRequestItem.c \
+ ngap/ASN_NGAP_NGAPIESupportInformationResponseList.c \
+ ngap/ASN_NGAP_NGAPIESupportInformationResponseItem.c \
+ ngap/ASN_NGAP_NgENB-ID.c \
+ ngap/ASN_NGAP_NotifySourceNGRANNode.c \
+ ngap/ASN_NGAP_NGRAN-CGI.c \
+ ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveList.c \
+ ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveItem.c \
+ ngap/ASN_NGAP_NGRANTraceID.c \
+ ngap/ASN_NGAP_NID.c \
+ ngap/ASN_NGAP_NonDynamic5QIDescriptor.c \
+ ngap/ASN_NGAP_NotAllowedTACs.c \
+ ngap/ASN_NGAP_NotificationCause.c \
+ ngap/ASN_NGAP_NotificationControl.c \
+ ngap/ASN_NGAP_NPN-AccessInformation.c \
+ ngap/ASN_NGAP_NPN-MobilityInformation.c \
+ ngap/ASN_NGAP_NPN-PagingAssistanceInformation.c \
+ ngap/ASN_NGAP_NPN-Support.c \
+ ngap/ASN_NGAP_NRCellIdentity.c \
+ ngap/ASN_NGAP_NR-CGI.c \
+ ngap/ASN_NGAP_NR-CGIList.c \
+ ngap/ASN_NGAP_NR-CGIListForWarning.c \
+ ngap/ASN_NGAP_NR-PagingeDRXInformation.c \
+ ngap/ASN_NGAP_NR-Paging-eDRX-Cycle.c \
+ ngap/ASN_NGAP_NR-Paging-Time-Window.c \
+ ngap/ASN_NGAP_NRencryptionAlgorithms.c \
+ ngap/ASN_NGAP_NRintegrityProtectionAlgorithms.c \
+ ngap/ASN_NGAP_NRMobilityHistoryReport.c \
+ ngap/ASN_NGAP_NRPPa-PDU.c \
+ ngap/ASN_NGAP_NRUERLFReportContainer.c \
+ ngap/ASN_NGAP_NRNTNTAIInformation.c \
+ ngap/ASN_NGAP_NumberOfBroadcasts.c \
+ ngap/ASN_NGAP_NumberOfBroadcastsRequested.c \
+ ngap/ASN_NGAP_NRARFCN.c \
+ ngap/ASN_NGAP_NRFrequencyBand.c \
+ ngap/ASN_NGAP_NRFrequencyBand-List.c \
+ ngap/ASN_NGAP_NRFrequencyBandItem.c \
+ ngap/ASN_NGAP_NRFrequencyInfo.c \
+ ngap/ASN_NGAP_NR-PCI.c \
+ ngap/ASN_NGAP_NRV2XServicesAuthorized.c \
+ ngap/ASN_NGAP_VehicleUE.c \
+ ngap/ASN_NGAP_PedestrianUE.c \
+ ngap/ASN_NGAP_NRUESidelinkAggregateMaximumBitrate.c \
+ ngap/ASN_NGAP_NSAG-ID.c \
+ ngap/ASN_NGAP_OnboardingSupport.c \
+ ngap/ASN_NGAP_OverloadAction.c \
+ ngap/ASN_NGAP_OverloadResponse.c \
+ ngap/ASN_NGAP_OverloadStartNSSAIList.c \
+ ngap/ASN_NGAP_OverloadStartNSSAIItem.c \
+ ngap/ASN_NGAP_PacketDelayBudget.c \
+ ngap/ASN_NGAP_PacketErrorRate.c \
+ ngap/ASN_NGAP_PacketLossRate.c \
+ ngap/ASN_NGAP_PagingAssisDataforCEcapabUE.c \
+ ngap/ASN_NGAP_PagingAttemptInformation.c \
+ ngap/ASN_NGAP_PagingAttemptCount.c \
+ ngap/ASN_NGAP_PagingCause.c \
+ ngap/ASN_NGAP_PagingCauseIndicationForVoiceService.c \
+ ngap/ASN_NGAP_PagingDRX.c \
+ ngap/ASN_NGAP_PagingOrigin.c \
+ ngap/ASN_NGAP_PagingPriority.c \
+ ngap/ASN_NGAP_PagingProbabilityInformation.c \
+ ngap/ASN_NGAP_PathSwitchRequestAcknowledgeTransfer.c \
+ ngap/ASN_NGAP_PathSwitchRequestSetupFailedTransfer.c \
+ ngap/ASN_NGAP_PathSwitchRequestTransfer.c \
+ ngap/ASN_NGAP_PathSwitchRequestUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_PC5QoSParameters.c \
+ ngap/ASN_NGAP_PC5QoSFlowList.c \
+ ngap/ASN_NGAP_PC5QoSFlowItem.c \
+ ngap/ASN_NGAP_PC5FlowBitRates.c \
+ ngap/ASN_NGAP_PCIListForMDT.c \
+ ngap/ASN_NGAP_PrivacyIndicator.c \
+ ngap/ASN_NGAP_PDUSessionAggregateMaximumBitRate.c \
+ ngap/ASN_NGAP_PDUSessionID.c \
+ ngap/ASN_NGAP_PDUSessionPairID.c \
+ ngap/ASN_NGAP_PDUSessionResourceAdmittedList.c \
+ ngap/ASN_NGAP_PDUSessionResourceAdmittedItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModCfm.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModCfm.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtFail.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtFail.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListHOAck.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemHOAck.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListPSReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemPSReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListSURes.c \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemSURes.c \
+ ngap/ASN_NGAP_PDUSessionResourceHandoverList.c \
+ ngap/ASN_NGAP_PDUSessionResourceHandoverItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceInformationList.c \
+ ngap/ASN_NGAP_PDUSessionResourceInformationItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceListCxtRelCpl.c \
+ ngap/ASN_NGAP_PDUSessionResourceItemCxtRelCpl.c \
+ ngap/ASN_NGAP_PDUSessionResourceListCxtRelReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceItemCxtRelReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceListHORqd.c \
+ ngap/ASN_NGAP_PDUSessionResourceItemHORqd.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyConfirmTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyIndicationUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyRequestTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyResponseTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyIndicationTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModCfm.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModCfm.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModInd.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModInd.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyList.c \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyReleasedTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseCommandTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListNot.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemNot.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListPSAck.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSAck.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListPSFail.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSFail.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListRelRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemRelRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseResponseTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceResumeListRESReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceResumeItemRESReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceResumeListRESRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceResumeItemRESRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageList.c \
+ ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListCxtReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListCxtRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtRes.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListHOReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemHOReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListSUReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemSUReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListSURes.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemSURes.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupRequestTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupResponseTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer.c \
+ ngap/ASN_NGAP_PDUSessionResourceSuspendListSUSReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSuspendItemSUSReq.c \
+ ngap/ASN_NGAP_PDUSessionResourceSwitchedList.c \
+ ngap/ASN_NGAP_PDUSessionResourceSwitchedItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLList.c \
+ ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLItem.c \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseListHOCmd.c \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseItemHOCmd.c \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseListRelCmd.c \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseItemRelCmd.c \
+ ngap/ASN_NGAP_PDUSessionType.c \
+ ngap/ASN_NGAP_PDUSessionUsageReport.c \
+ ngap/ASN_NGAP_PEIPSassistanceInformation.c \
+ ngap/ASN_NGAP_Periodicity.c \
+ ngap/ASN_NGAP_PeriodicRegistrationUpdateTimer.c \
+ ngap/ASN_NGAP_PLMNIdentity.c \
+ ngap/ASN_NGAP_PLMNAreaBasedQMC.c \
+ ngap/ASN_NGAP_PLMNListforQMC.c \
+ ngap/ASN_NGAP_PLMNSupportList.c \
+ ngap/ASN_NGAP_PLMNSupportItem.c \
+ ngap/ASN_NGAP_PNI-NPN-MobilityInformation.c \
+ ngap/ASN_NGAP_PortNumber.c \
+ ngap/ASN_NGAP_Pre-emptionCapability.c \
+ ngap/ASN_NGAP_Pre-emptionVulnerability.c \
+ ngap/ASN_NGAP_PriorityLevelARP.c \
+ ngap/ASN_NGAP_PriorityLevelQos.c \
+ ngap/ASN_NGAP_PWSFailedCellIDList.c \
+ ngap/ASN_NGAP_QMCConfigInfo.c \
+ ngap/ASN_NGAP_QMCDeactivation.c \
+ ngap/ASN_NGAP_QoEReferenceList.c \
+ ngap/ASN_NGAP_QoEReference.c \
+ ngap/ASN_NGAP_QosCharacteristics.c \
+ ngap/ASN_NGAP_QosFlowAcceptedList.c \
+ ngap/ASN_NGAP_QosFlowAcceptedItem.c \
+ ngap/ASN_NGAP_QosFlowAddOrModifyRequestList.c \
+ ngap/ASN_NGAP_QosFlowAddOrModifyRequestItem.c \
+ ngap/ASN_NGAP_QosFlowAddOrModifyResponseList.c \
+ ngap/ASN_NGAP_QosFlowAddOrModifyResponseItem.c \
+ ngap/ASN_NGAP_QosFlowFeedbackList.c \
+ ngap/ASN_NGAP_QosFlowFeedbackItem.c \
+ ngap/ASN_NGAP_QosFlowIdentifier.c \
+ ngap/ASN_NGAP_QosFlowInformationList.c \
+ ngap/ASN_NGAP_QosFlowInformationItem.c \
+ ngap/ASN_NGAP_QosFlowLevelQosParameters.c \
+ ngap/ASN_NGAP_QosMonitoringRequest.c \
+ ngap/ASN_NGAP_QosMonitoringReportingFrequency.c \
+ ngap/ASN_NGAP_QoSFlowList.c \
+ ngap/ASN_NGAP_QosFlowListWithCause.c \
+ ngap/ASN_NGAP_QosFlowWithCauseItem.c \
+ ngap/ASN_NGAP_QosFlowModifyConfirmList.c \
+ ngap/ASN_NGAP_QosFlowModifyConfirmItem.c \
+ ngap/ASN_NGAP_QosFlowNotifyList.c \
+ ngap/ASN_NGAP_QosFlowNotifyItem.c \
+ ngap/ASN_NGAP_QosFlowParametersList.c \
+ ngap/ASN_NGAP_QosFlowParametersItem.c \
+ ngap/ASN_NGAP_QosFlowPerTNLInformation.c \
+ ngap/ASN_NGAP_QosFlowPerTNLInformationList.c \
+ ngap/ASN_NGAP_QosFlowPerTNLInformationItem.c \
+ ngap/ASN_NGAP_QosFlowSetupRequestList.c \
+ ngap/ASN_NGAP_QosFlowSetupRequestItem.c \
+ ngap/ASN_NGAP_QosFlowListWithDataForwarding.c \
+ ngap/ASN_NGAP_QosFlowItemWithDataForwarding.c \
+ ngap/ASN_NGAP_QosFlowToBeForwardedList.c \
+ ngap/ASN_NGAP_QosFlowToBeForwardedItem.c \
+ ngap/ASN_NGAP_QoSFlowsUsageReportList.c \
+ ngap/ASN_NGAP_QoSFlowsUsageReport-Item.c \
+ ngap/ASN_NGAP_Range.c \
+ ngap/ASN_NGAP_RANNodeName.c \
+ ngap/ASN_NGAP_RANNodeNameVisibleString.c \
+ ngap/ASN_NGAP_RANNodeNameUTF8String.c \
+ ngap/ASN_NGAP_RANPagingPriority.c \
+ ngap/ASN_NGAP_RANStatusTransfer-TransparentContainer.c \
+ ngap/ASN_NGAP_RAN-UE-NGAP-ID.c \
+ ngap/ASN_NGAP_RAT-Information.c \
+ ngap/ASN_NGAP_RATRestrictions.c \
+ ngap/ASN_NGAP_RATRestrictions-Item.c \
+ ngap/ASN_NGAP_RATRestrictionInformation.c \
+ ngap/ASN_NGAP_RecommendedCellsForPaging.c \
+ ngap/ASN_NGAP_RecommendedCellList.c \
+ ngap/ASN_NGAP_RecommendedCellItem.c \
+ ngap/ASN_NGAP_RecommendedRANNodesForPaging.c \
+ ngap/ASN_NGAP_RecommendedRANNodeList.c \
+ ngap/ASN_NGAP_RecommendedRANNodeItem.c \
+ ngap/ASN_NGAP_RedCapIndication.c \
+ ngap/ASN_NGAP_RedirectionVoiceFallback.c \
+ ngap/ASN_NGAP_RedundantPDUSessionInformation.c \
+ ngap/ASN_NGAP_RedundantQosFlowIndicator.c \
+ ngap/ASN_NGAP_ReflectiveQosAttribute.c \
+ ngap/ASN_NGAP_RelativeAMFCapacity.c \
+ ngap/ASN_NGAP_ReportArea.c \
+ ngap/ASN_NGAP_RepetitionPeriod.c \
+ ngap/ASN_NGAP_ResetAll.c \
+ ngap/ASN_NGAP_ReportAmountMDT.c \
+ ngap/ASN_NGAP_ReportIntervalMDT.c \
+ ngap/ASN_NGAP_ExtendedReportIntervalMDT.c \
+ ngap/ASN_NGAP_ResetType.c \
+ ngap/ASN_NGAP_RGLevelWirelineAccessCharacteristics.c \
+ ngap/ASN_NGAP_RNC-ID.c \
+ ngap/ASN_NGAP_RoutingID.c \
+ ngap/ASN_NGAP_RRCContainer.c \
+ ngap/ASN_NGAP_RRCEstablishmentCause.c \
+ ngap/ASN_NGAP_RRCInactiveTransitionReportRequest.c \
+ ngap/ASN_NGAP_RRCState.c \
+ ngap/ASN_NGAP_RSN.c \
+ ngap/ASN_NGAP_RIMInformationTransfer.c \
+ ngap/ASN_NGAP_RIMInformation.c \
+ ngap/ASN_NGAP_GNBSetID.c \
+ ngap/ASN_NGAP_ScheduledCommunicationTime.c \
+ ngap/ASN_NGAP_SCTP-TLAs.c \
+ ngap/ASN_NGAP_SD.c \
+ ngap/ASN_NGAP_SecondaryRATUsageInformation.c \
+ ngap/ASN_NGAP_SecondaryRATDataUsageReportTransfer.c \
+ ngap/ASN_NGAP_SecurityContext.c \
+ ngap/ASN_NGAP_SecurityIndication.c \
+ ngap/ASN_NGAP_SecurityKey.c \
+ ngap/ASN_NGAP_SecurityResult.c \
+ ngap/ASN_NGAP_SensorMeasurementConfiguration.c \
+ ngap/ASN_NGAP_SensorMeasConfigNameList.c \
+ ngap/ASN_NGAP_SensorMeasConfigNameItem.c \
+ ngap/ASN_NGAP_SensorMeasConfig.c \
+ ngap/ASN_NGAP_SensorNameConfig.c \
+ ngap/ASN_NGAP_SerialNumber.c \
+ ngap/ASN_NGAP_ServedGUAMIList.c \
+ ngap/ASN_NGAP_ServedGUAMIItem.c \
+ ngap/ASN_NGAP_ServiceAreaInformation.c \
+ ngap/ASN_NGAP_ServiceAreaInformation-Item.c \
+ ngap/ASN_NGAP_ServiceType.c \
+ ngap/ASN_NGAP_SgNB-UE-X2AP-ID.c \
+ ngap/ASN_NGAP_SharedNGU-MulticastTNLInformation.c \
+ ngap/ASN_NGAP_SliceOverloadList.c \
+ ngap/ASN_NGAP_SliceOverloadItem.c \
+ ngap/ASN_NGAP_SliceSupportList.c \
+ ngap/ASN_NGAP_SliceSupportItem.c \
+ ngap/ASN_NGAP_SliceSupportListQMC.c \
+ ngap/ASN_NGAP_SliceSupportQMC-Item.c \
+ ngap/ASN_NGAP_SNPN-MobilityInformation.c \
+ ngap/ASN_NGAP_S-NSSAI.c \
+ ngap/ASN_NGAP_SONConfigurationTransfer.c \
+ ngap/ASN_NGAP_SONInformation.c \
+ ngap/ASN_NGAP_SONInformationReply.c \
+ ngap/ASN_NGAP_SONInformationReport.c \
+ ngap/ASN_NGAP_SuccessfulHandoverReportList.c \
+ ngap/ASN_NGAP_SuccessfulHandoverReport-Item.c \
+ ngap/ASN_NGAP_SONInformationRequest.c \
+ ngap/ASN_NGAP_SourceNGRANNode-ToTargetNGRANNode-TransparentContainer.c \
+ ngap/ASN_NGAP_SourceNodeID.c \
+ ngap/ASN_NGAP_SourceOfUEActivityBehaviourInformation.c \
+ ngap/ASN_NGAP_SourceRANNodeID.c \
+ ngap/ASN_NGAP_SourceToTarget-TransparentContainer.c \
+ ngap/ASN_NGAP_SourceToTarget-AMFInformationReroute.c \
+ ngap/ASN_NGAP_SRVCCOperationPossible.c \
+ ngap/ASN_NGAP_ConfiguredNSSAI.c \
+ ngap/ASN_NGAP_RejectedNSSAIinPLMN.c \
+ ngap/ASN_NGAP_RejectedNSSAIinTA.c \
+ ngap/ASN_NGAP_SST.c \
+ ngap/ASN_NGAP_SupportedTAList.c \
+ ngap/ASN_NGAP_SupportedTAItem.c \
+ ngap/ASN_NGAP_SuspendIndicator.c \
+ ngap/ASN_NGAP_Suspend-Request-Indication.c \
+ ngap/ASN_NGAP_Suspend-Response-Indication.c \
+ ngap/ASN_NGAP_SurvivalTime.c \
+ ngap/ASN_NGAP_TAC.c \
+ ngap/ASN_NGAP_TACListInNRNTN.c \
+ ngap/ASN_NGAP_TAI.c \
+ ngap/ASN_NGAP_TAIBroadcastEUTRA.c \
+ ngap/ASN_NGAP_TAIBroadcastEUTRA-Item.c \
+ ngap/ASN_NGAP_TAIBroadcastNR.c \
+ ngap/ASN_NGAP_TAIBroadcastNR-Item.c \
+ ngap/ASN_NGAP_TAICancelledEUTRA.c \
+ ngap/ASN_NGAP_TAICancelledEUTRA-Item.c \
+ ngap/ASN_NGAP_TAICancelledNR.c \
+ ngap/ASN_NGAP_TAICancelledNR-Item.c \
+ ngap/ASN_NGAP_TAIListForInactive.c \
+ ngap/ASN_NGAP_TAIListForInactiveItem.c \
+ ngap/ASN_NGAP_TAIListForPaging.c \
+ ngap/ASN_NGAP_TAIListForPagingItem.c \
+ ngap/ASN_NGAP_TAIListForRestart.c \
+ ngap/ASN_NGAP_TAIListForWarning.c \
+ ngap/ASN_NGAP_TAINSAGSupportList.c \
+ ngap/ASN_NGAP_TAINSAGSupportItem.c \
+ ngap/ASN_NGAP_TargeteNB-ID.c \
+ ngap/ASN_NGAP_TargetHomeENB-ID.c \
+ ngap/ASN_NGAP_TargetID.c \
+ ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-TransparentContainer.c \
+ ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer.c \
+ ngap/ASN_NGAP_TargetNSSAI.c \
+ ngap/ASN_NGAP_TargetNSSAI-Item.c \
+ ngap/ASN_NGAP_TargetNSSAIInformation.c \
+ ngap/ASN_NGAP_TargetRANNodeID.c \
+ ngap/ASN_NGAP_TargetRANNodeID-RIM.c \
+ ngap/ASN_NGAP_TargetRANNodeID-SON.c \
+ ngap/ASN_NGAP_TargetRNC-ID.c \
+ ngap/ASN_NGAP_TargetToSource-TransparentContainer.c \
+ ngap/ASN_NGAP_TargettoSource-Failure-TransparentContainer.c \
+ ngap/ASN_NGAP_TimerApproachForGUAMIRemoval.c \
+ ngap/ASN_NGAP_TimeStamp.c \
+ ngap/ASN_NGAP_TimeSyncAssistanceInfo.c \
+ ngap/ASN_NGAP_TimeToWait.c \
+ ngap/ASN_NGAP_TimeUEStayedInCell.c \
+ ngap/ASN_NGAP_TimeUEStayedInCellEnhancedGranularity.c \
+ ngap/ASN_NGAP_TMGI.c \
+ ngap/ASN_NGAP_TNAP-ID.c \
+ ngap/ASN_NGAP_TNGF-ID.c \
+ ngap/ASN_NGAP_TNLAddressWeightFactor.c \
+ ngap/ASN_NGAP_TNLAssociationList.c \
+ ngap/ASN_NGAP_TNLAssociationItem.c \
+ ngap/ASN_NGAP_TNLAssociationUsage.c \
+ ngap/ASN_NGAP_TooearlyIntersystemHO.c \
+ ngap/ASN_NGAP_TraceActivation.c \
+ ngap/ASN_NGAP_TraceDepth.c \
+ ngap/ASN_NGAP_TrafficLoadReductionIndication.c \
+ ngap/ASN_NGAP_TransportLayerAddress.c \
+ ngap/ASN_NGAP_TypeOfError.c \
+ ngap/ASN_NGAP_TAIBasedMDT.c \
+ ngap/ASN_NGAP_TAIListforMDT.c \
+ ngap/ASN_NGAP_TAIBasedQMC.c \
+ ngap/ASN_NGAP_TAIListforQMC.c \
+ ngap/ASN_NGAP_TABasedQMC.c \
+ ngap/ASN_NGAP_TAListforQMC.c \
+ ngap/ASN_NGAP_TABasedMDT.c \
+ ngap/ASN_NGAP_TAListforMDT.c \
+ ngap/ASN_NGAP_Threshold-RSRP.c \
+ ngap/ASN_NGAP_Threshold-RSRQ.c \
+ ngap/ASN_NGAP_Threshold-SINR.c \
+ ngap/ASN_NGAP_TimeToTrigger.c \
+ ngap/ASN_NGAP_TWAP-ID.c \
+ ngap/ASN_NGAP_TWIF-ID.c \
+ ngap/ASN_NGAP_TSCAssistanceInformation.c \
+ ngap/ASN_NGAP_TSCTrafficCharacteristics.c \
+ ngap/ASN_NGAP_UEAggregateMaximumBitRate.c \
+ ngap/ASN_NGAP_UEAppLayerMeasInfoList.c \
+ ngap/ASN_NGAP_UEAppLayerMeasInfoItem.c \
+ ngap/ASN_NGAP_UEAppLayerMeasConfigInfo.c \
+ ngap/ASN_NGAP_UE-associatedLogicalNG-connectionList.c \
+ ngap/ASN_NGAP_UE-associatedLogicalNG-connectionItem.c \
+ ngap/ASN_NGAP_UECapabilityInfoRequest.c \
+ ngap/ASN_NGAP_UEContextRequest.c \
+ ngap/ASN_NGAP_UEContextResumeRequestTransfer.c \
+ ngap/ASN_NGAP_UEContextResumeResponseTransfer.c \
+ ngap/ASN_NGAP_UEContextSuspendRequestTransfer.c \
+ ngap/ASN_NGAP_UE-DifferentiationInfo.c \
+ ngap/ASN_NGAP_UEHistoryInformation.c \
+ ngap/ASN_NGAP_UEHistoryInformationFromTheUE.c \
+ ngap/ASN_NGAP_UEIdentityIndexValue.c \
+ ngap/ASN_NGAP_UE-NGAP-IDs.c \
+ ngap/ASN_NGAP_UE-NGAP-ID-pair.c \
+ ngap/ASN_NGAP_UEPagingIdentity.c \
+ ngap/ASN_NGAP_UEPresence.c \
+ ngap/ASN_NGAP_UEPresenceInAreaOfInterestList.c \
+ ngap/ASN_NGAP_UEPresenceInAreaOfInterestItem.c \
+ ngap/ASN_NGAP_UERadioCapability.c \
+ ngap/ASN_NGAP_UERadioCapabilityForPaging.c \
+ ngap/ASN_NGAP_UERadioCapabilityForPagingOfNB-IoT.c \
+ ngap/ASN_NGAP_UERadioCapabilityForPagingOfNR.c \
+ ngap/ASN_NGAP_UERadioCapabilityForPagingOfEUTRA.c \
+ ngap/ASN_NGAP_UERadioCapabilityID.c \
+ ngap/ASN_NGAP_UERetentionInformation.c \
+ ngap/ASN_NGAP_UERLFReportContainer.c \
+ ngap/ASN_NGAP_UESecurityCapabilities.c \
+ ngap/ASN_NGAP_UESliceMaximumBitRateList.c \
+ ngap/ASN_NGAP_UESliceMaximumBitRateItem.c \
+ ngap/ASN_NGAP_UE-UP-CIoT-Support.c \
+ ngap/ASN_NGAP_UL-CP-SecurityInformation.c \
+ ngap/ASN_NGAP_UL-NAS-MAC.c \
+ ngap/ASN_NGAP_UL-NAS-Count.c \
+ ngap/ASN_NGAP_UL-NGU-UP-TNLModifyList.c \
+ ngap/ASN_NGAP_UL-NGU-UP-TNLModifyItem.c \
+ ngap/ASN_NGAP_UnavailableGUAMIList.c \
+ ngap/ASN_NGAP_UnavailableGUAMIItem.c \
+ ngap/ASN_NGAP_ULForwarding.c \
+ ngap/ASN_NGAP_UpdateFeedback.c \
+ ngap/ASN_NGAP_UPTransportLayerInformation.c \
+ ngap/ASN_NGAP_UPTransportLayerInformationList.c \
+ ngap/ASN_NGAP_UPTransportLayerInformationItem.c \
+ ngap/ASN_NGAP_UPTransportLayerInformationPairList.c \
+ ngap/ASN_NGAP_UPTransportLayerInformationPairItem.c \
+ ngap/ASN_NGAP_URI-address.c \
+ ngap/ASN_NGAP_UserLocationInformation.c \
+ ngap/ASN_NGAP_UserLocationInformationEUTRA.c \
+ ngap/ASN_NGAP_UserLocationInformationN3IWF.c \
+ ngap/ASN_NGAP_UserLocationInformationTNGF.c \
+ ngap/ASN_NGAP_UserLocationInformationTWIF.c \
+ ngap/ASN_NGAP_UserLocationInformationW-AGF.c \
+ ngap/ASN_NGAP_UserLocationInformationNR.c \
+ ngap/ASN_NGAP_UserPlaneSecurityInformation.c \
+ ngap/ASN_NGAP_VolumeTimedReportList.c \
+ ngap/ASN_NGAP_VolumeTimedReport-Item.c \
+ ngap/ASN_NGAP_W-AGF-ID.c \
+ ngap/ASN_NGAP_WarningAreaCoordinates.c \
+ ngap/ASN_NGAP_WarningAreaList.c \
+ ngap/ASN_NGAP_WarningMessageContents.c \
+ ngap/ASN_NGAP_WarningSecurityInfo.c \
+ ngap/ASN_NGAP_WarningType.c \
+ ngap/ASN_NGAP_WLANMeasurementConfiguration.c \
+ ngap/ASN_NGAP_WLANMeasConfigNameList.c \
+ ngap/ASN_NGAP_WLANMeasConfigNameItem.c \
+ ngap/ASN_NGAP_WLANMeasConfig.c \
+ ngap/ASN_NGAP_WLANName.c \
+ ngap/ASN_NGAP_WUS-Assistance-Information.c \
+ ngap/ASN_NGAP_XnExtTLAs.c \
+ ngap/ASN_NGAP_XnExtTLA-Item.c \
+ ngap/ASN_NGAP_XnGTP-TLAs.c \
+ ngap/ASN_NGAP_XnTLAs.c \
+ ngap/ASN_NGAP_XnTNLConfigurationInfo.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupRequest.c \
+ ngap/ASN_NGAP_PDUSessionResourceSetupResponse.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseCommand.c \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseResponse.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyRequest.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyResponse.c \
+ ngap/ASN_NGAP_PDUSessionResourceNotify.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyIndication.c \
+ ngap/ASN_NGAP_PDUSessionResourceModifyConfirm.c \
+ ngap/ASN_NGAP_InitialContextSetupRequest.c \
+ ngap/ASN_NGAP_InitialContextSetupResponse.c \
+ ngap/ASN_NGAP_InitialContextSetupFailure.c \
+ ngap/ASN_NGAP_UEContextReleaseRequest.c \
+ ngap/ASN_NGAP_UEContextReleaseCommand.c \
+ ngap/ASN_NGAP_UEContextReleaseComplete.c \
+ ngap/ASN_NGAP_UEContextResumeRequest.c \
+ ngap/ASN_NGAP_UEContextResumeResponse.c \
+ ngap/ASN_NGAP_UEContextResumeFailure.c \
+ ngap/ASN_NGAP_UEContextSuspendRequest.c \
+ ngap/ASN_NGAP_UEContextSuspendResponse.c \
+ ngap/ASN_NGAP_UEContextSuspendFailure.c \
+ ngap/ASN_NGAP_UEContextModificationRequest.c \
+ ngap/ASN_NGAP_UEContextModificationResponse.c \
+ ngap/ASN_NGAP_UEContextModificationFailure.c \
+ ngap/ASN_NGAP_RRCInactiveTransitionReport.c \
+ ngap/ASN_NGAP_RetrieveUEInformation.c \
+ ngap/ASN_NGAP_UEInformationTransfer.c \
+ ngap/ASN_NGAP_RANCPRelocationIndication.c \
+ ngap/ASN_NGAP_HandoverRequired.c \
+ ngap/ASN_NGAP_HandoverCommand.c \
+ ngap/ASN_NGAP_HandoverPreparationFailure.c \
+ ngap/ASN_NGAP_HandoverRequest.c \
+ ngap/ASN_NGAP_HandoverRequestAcknowledge.c \
+ ngap/ASN_NGAP_HandoverFailure.c \
+ ngap/ASN_NGAP_HandoverNotify.c \
+ ngap/ASN_NGAP_PathSwitchRequest.c \
+ ngap/ASN_NGAP_PathSwitchRequestAcknowledge.c \
+ ngap/ASN_NGAP_PathSwitchRequestFailure.c \
+ ngap/ASN_NGAP_HandoverCancel.c \
+ ngap/ASN_NGAP_HandoverCancelAcknowledge.c \
+ ngap/ASN_NGAP_HandoverSuccess.c \
+ ngap/ASN_NGAP_UplinkRANEarlyStatusTransfer.c \
+ ngap/ASN_NGAP_DownlinkRANEarlyStatusTransfer.c \
+ ngap/ASN_NGAP_UplinkRANStatusTransfer.c \
+ ngap/ASN_NGAP_DownlinkRANStatusTransfer.c \
+ ngap/ASN_NGAP_Paging.c \
+ ngap/ASN_NGAP_InitialUEMessage.c \
+ ngap/ASN_NGAP_DownlinkNASTransport.c \
+ ngap/ASN_NGAP_UplinkNASTransport.c \
+ ngap/ASN_NGAP_NASNonDeliveryIndication.c \
+ ngap/ASN_NGAP_RerouteNASRequest.c \
+ ngap/ASN_NGAP_NGSetupRequest.c \
+ ngap/ASN_NGAP_NGSetupResponse.c \
+ ngap/ASN_NGAP_NGSetupFailure.c \
+ ngap/ASN_NGAP_RANConfigurationUpdate.c \
+ ngap/ASN_NGAP_RANConfigurationUpdateAcknowledge.c \
+ ngap/ASN_NGAP_RANConfigurationUpdateFailure.c \
+ ngap/ASN_NGAP_AMFConfigurationUpdate.c \
+ ngap/ASN_NGAP_AMFConfigurationUpdateAcknowledge.c \
+ ngap/ASN_NGAP_AMFConfigurationUpdateFailure.c \
+ ngap/ASN_NGAP_AMFStatusIndication.c \
+ ngap/ASN_NGAP_NGReset.c \
+ ngap/ASN_NGAP_NGResetAcknowledge.c \
+ ngap/ASN_NGAP_ErrorIndication.c \
+ ngap/ASN_NGAP_OverloadStart.c \
+ ngap/ASN_NGAP_OverloadStop.c \
+ ngap/ASN_NGAP_UplinkRANConfigurationTransfer.c \
+ ngap/ASN_NGAP_DownlinkRANConfigurationTransfer.c \
+ ngap/ASN_NGAP_WriteReplaceWarningRequest.c \
+ ngap/ASN_NGAP_WriteReplaceWarningResponse.c \
+ ngap/ASN_NGAP_PWSCancelRequest.c \
+ ngap/ASN_NGAP_PWSCancelResponse.c \
+ ngap/ASN_NGAP_PWSRestartIndication.c \
+ ngap/ASN_NGAP_PWSFailureIndication.c \
+ ngap/ASN_NGAP_DownlinkUEAssociatedNRPPaTransport.c \
+ ngap/ASN_NGAP_UplinkUEAssociatedNRPPaTransport.c \
+ ngap/ASN_NGAP_DownlinkNonUEAssociatedNRPPaTransport.c \
+ ngap/ASN_NGAP_UplinkNonUEAssociatedNRPPaTransport.c \
+ ngap/ASN_NGAP_TraceStart.c \
+ ngap/ASN_NGAP_TraceFailureIndication.c \
+ ngap/ASN_NGAP_DeactivateTrace.c \
+ ngap/ASN_NGAP_CellTrafficTrace.c \
+ ngap/ASN_NGAP_LocationReportingControl.c \
+ ngap/ASN_NGAP_LocationReportingFailureIndication.c \
+ ngap/ASN_NGAP_LocationReport.c \
+ ngap/ASN_NGAP_UETNLABindingReleaseRequest.c \
+ ngap/ASN_NGAP_UERadioCapabilityInfoIndication.c \
+ ngap/ASN_NGAP_UERadioCapabilityCheckRequest.c \
+ ngap/ASN_NGAP_UERadioCapabilityCheckResponse.c \
+ ngap/ASN_NGAP_PrivateMessage.c \
+ ngap/ASN_NGAP_SecondaryRATDataUsageReport.c \
+ ngap/ASN_NGAP_UplinkRIMInformationTransfer.c \
+ ngap/ASN_NGAP_DownlinkRIMInformationTransfer.c \
+ ngap/ASN_NGAP_ConnectionEstablishmentIndication.c \
+ ngap/ASN_NGAP_UERadioCapabilityIDMappingRequest.c \
+ ngap/ASN_NGAP_UERadioCapabilityIDMappingResponse.c \
+ ngap/ASN_NGAP_AMFCPRelocationIndication.c \
+ ngap/ASN_NGAP_BroadcastSessionSetupRequest.c \
+ ngap/ASN_NGAP_BroadcastSessionSetupResponse.c \
+ ngap/ASN_NGAP_BroadcastSessionSetupFailure.c \
+ ngap/ASN_NGAP_BroadcastSessionModificationRequest.c \
+ ngap/ASN_NGAP_BroadcastSessionModificationResponse.c \
+ ngap/ASN_NGAP_BroadcastSessionModificationFailure.c \
+ ngap/ASN_NGAP_BroadcastSessionReleaseRequest.c \
+ ngap/ASN_NGAP_BroadcastSessionReleaseRequired.c \
+ ngap/ASN_NGAP_BroadcastSessionReleaseResponse.c \
+ ngap/ASN_NGAP_DistributionSetupRequest.c \
+ ngap/ASN_NGAP_DistributionSetupResponse.c \
+ ngap/ASN_NGAP_DistributionSetupFailure.c \
+ ngap/ASN_NGAP_DistributionReleaseRequest.c \
+ ngap/ASN_NGAP_DistributionReleaseResponse.c \
+ ngap/ASN_NGAP_MulticastSessionActivationRequest.c \
+ ngap/ASN_NGAP_MulticastSessionActivationResponse.c \
+ ngap/ASN_NGAP_MulticastSessionActivationFailure.c \
+ ngap/ASN_NGAP_MulticastSessionDeactivationRequest.c \
+ ngap/ASN_NGAP_MulticastSessionDeactivationResponse.c \
+ ngap/ASN_NGAP_MulticastSessionUpdateRequest.c \
+ ngap/ASN_NGAP_MulticastSessionUpdateResponse.c \
+ ngap/ASN_NGAP_MulticastSessionUpdateFailure.c \
+ ngap/ASN_NGAP_MulticastGroupPaging.c \
+ ngap/ASN_NGAP_NGAP-PDU.c \
+ ngap/ASN_NGAP_InitiatingMessage.c \
+ ngap/ASN_NGAP_SuccessfulOutcome.c \
+ ngap/ASN_NGAP_UnsuccessfulOutcome.c
+
+ASN_MODULE_HDRS= \
+ ngap/ASN_NGAP_Criticality.h \
+ ngap/ASN_NGAP_Presence.h \
+ ngap/ASN_NGAP_PrivateIE-ID.h \
+ ngap/ASN_NGAP_ProcedureCode.h \
+ ngap/ASN_NGAP_ProtocolExtensionID.h \
+ ngap/ASN_NGAP_ProtocolIE-ID.h \
+ ngap/ASN_NGAP_TriggeringMessage.h \
+ ngap/ASN_NGAP_ProtocolIE-Container.h \
+ ngap/ASN_NGAP_ProtocolIE-SingleContainer.h \
+ ngap/ASN_NGAP_ProtocolIE-Field.h \
+ ngap/ASN_NGAP_ProtocolIE-ContainerPair.h \
+ ngap/ASN_NGAP_ProtocolIE-FieldPair.h \
+ ngap/ASN_NGAP_ProtocolIE-ContainerList.h \
+ ngap/ASN_NGAP_ProtocolIE-ContainerPairList.h \
+ ngap/ASN_NGAP_ProtocolExtensionContainer.h \
+ ngap/ASN_NGAP_ProtocolExtensionField.h \
+ ngap/ASN_NGAP_PrivateIE-Container.h \
+ ngap/ASN_NGAP_PrivateIE-Field.h \
+ ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOList.h \
+ ngap/ASN_NGAP_AdditionalDLUPTNLInformationForHOItem.h \
+ ngap/ASN_NGAP_AdditionalQosFlowInformation.h \
+ ngap/ASN_NGAP_AllocationAndRetentionPriority.h \
+ ngap/ASN_NGAP_Allowed-CAG-List-per-PLMN.h \
+ ngap/ASN_NGAP_AllowedNSSAI.h \
+ ngap/ASN_NGAP_AllowedNSSAI-Item.h \
+ ngap/ASN_NGAP_Allowed-PNI-NPN-List.h \
+ ngap/ASN_NGAP_Allowed-PNI-NPN-Item.h \
+ ngap/ASN_NGAP_AllowedTACs.h \
+ ngap/ASN_NGAP_AlternativeQoSParaSetIndex.h \
+ ngap/ASN_NGAP_AlternativeQoSParaSetNotifyIndex.h \
+ ngap/ASN_NGAP_AlternativeQoSParaSetList.h \
+ ngap/ASN_NGAP_AlternativeQoSParaSetItem.h \
+ ngap/ASN_NGAP_AMFName.h \
+ ngap/ASN_NGAP_AMFNameVisibleString.h \
+ ngap/ASN_NGAP_AMFNameUTF8String.h \
+ ngap/ASN_NGAP_AMFPagingTarget.h \
+ ngap/ASN_NGAP_AMFPointer.h \
+ ngap/ASN_NGAP_AMFRegionID.h \
+ ngap/ASN_NGAP_AMFSetID.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationSetupList.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationSetupItem.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationToAddList.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationToAddItem.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationToRemoveList.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationToRemoveItem.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationToUpdateList.h \
+ ngap/ASN_NGAP_AMF-TNLAssociationToUpdateItem.h \
+ ngap/ASN_NGAP_AMF-UE-NGAP-ID.h \
+ ngap/ASN_NGAP_AreaOfInterest.h \
+ ngap/ASN_NGAP_AreaOfInterestCellList.h \
+ ngap/ASN_NGAP_AreaOfInterestCellItem.h \
+ ngap/ASN_NGAP_AreaOfInterestList.h \
+ ngap/ASN_NGAP_AreaOfInterestItem.h \
+ ngap/ASN_NGAP_AreaOfInterestRANNodeList.h \
+ ngap/ASN_NGAP_AreaOfInterestRANNodeItem.h \
+ ngap/ASN_NGAP_AreaOfInterestTAIList.h \
+ ngap/ASN_NGAP_AreaOfInterestTAIItem.h \
+ ngap/ASN_NGAP_AssistanceDataForPaging.h \
+ ngap/ASN_NGAP_AssistanceDataForRecommendedCells.h \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestList.h \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetupRequestItem.h \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestList.h \
+ ngap/ASN_NGAP_AssociatedMBSQosFlowSetuporModifyRequestItem.h \
+ ngap/ASN_NGAP_AssociatedQosFlowList.h \
+ ngap/ASN_NGAP_AssociatedQosFlowItem.h \
+ ngap/ASN_NGAP_AuthenticatedIndication.h \
+ ngap/ASN_NGAP_AveragingWindow.h \
+ ngap/ASN_NGAP_AreaScopeOfMDT-NR.h \
+ ngap/ASN_NGAP_AreaScopeOfMDT-EUTRA.h \
+ ngap/ASN_NGAP_AreaScopeOfNeighCellsList.h \
+ ngap/ASN_NGAP_AreaScopeOfNeighCellsItem.h \
+ ngap/ASN_NGAP_AreaScopeOfQMC.h \
+ ngap/ASN_NGAP_AvailableRANVisibleQoEMetrics.h \
+ ngap/ASN_NGAP_BeamMeasurementsReportConfiguration.h \
+ ngap/ASN_NGAP_BeamMeasurementsReportQuantity.h \
+ ngap/ASN_NGAP_BitRate.h \
+ ngap/ASN_NGAP_BroadcastCancelledAreaList.h \
+ ngap/ASN_NGAP_BroadcastCompletedAreaList.h \
+ ngap/ASN_NGAP_BroadcastPLMNList.h \
+ ngap/ASN_NGAP_BroadcastPLMNItem.h \
+ ngap/ASN_NGAP_BluetoothMeasurementConfiguration.h \
+ ngap/ASN_NGAP_BluetoothMeasConfigNameList.h \
+ ngap/ASN_NGAP_BluetoothMeasConfigNameItem.h \
+ ngap/ASN_NGAP_BluetoothMeasConfig.h \
+ ngap/ASN_NGAP_BluetoothName.h \
+ ngap/ASN_NGAP_BurstArrivalTime.h \
+ ngap/ASN_NGAP_CAG-ID.h \
+ ngap/ASN_NGAP_CancelAllWarningMessages.h \
+ ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA.h \
+ ngap/ASN_NGAP_CancelledCellsInEAI-EUTRA-Item.h \
+ ngap/ASN_NGAP_CancelledCellsInEAI-NR.h \
+ ngap/ASN_NGAP_CancelledCellsInEAI-NR-Item.h \
+ ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA.h \
+ ngap/ASN_NGAP_CancelledCellsInTAI-EUTRA-Item.h \
+ ngap/ASN_NGAP_CancelledCellsInTAI-NR.h \
+ ngap/ASN_NGAP_CancelledCellsInTAI-NR-Item.h \
+ ngap/ASN_NGAP_CandidateCellList.h \
+ ngap/ASN_NGAP_CandidateCellItem.h \
+ ngap/ASN_NGAP_CandidateCell.h \
+ ngap/ASN_NGAP_CandidateCellID.h \
+ ngap/ASN_NGAP_CandidatePCI.h \
+ ngap/ASN_NGAP_Cause.h \
+ ngap/ASN_NGAP_CauseMisc.h \
+ ngap/ASN_NGAP_CauseNas.h \
+ ngap/ASN_NGAP_CauseProtocol.h \
+ ngap/ASN_NGAP_CauseRadioNetwork.h \
+ ngap/ASN_NGAP_CauseTransport.h \
+ ngap/ASN_NGAP_Cell-CAGInformation.h \
+ ngap/ASN_NGAP_CellCAGList.h \
+ ngap/ASN_NGAP_CellIDBroadcastEUTRA.h \
+ ngap/ASN_NGAP_CellIDBroadcastEUTRA-Item.h \
+ ngap/ASN_NGAP_CellIDBroadcastNR.h \
+ ngap/ASN_NGAP_CellIDBroadcastNR-Item.h \
+ ngap/ASN_NGAP_CellIDCancelledEUTRA.h \
+ ngap/ASN_NGAP_CellIDCancelledEUTRA-Item.h \
+ ngap/ASN_NGAP_CellIDCancelledNR.h \
+ ngap/ASN_NGAP_CellIDCancelledNR-Item.h \
+ ngap/ASN_NGAP_CellIDListForRestart.h \
+ ngap/ASN_NGAP_CellSize.h \
+ ngap/ASN_NGAP_CellType.h \
+ ngap/ASN_NGAP_CEmodeBSupport-Indicator.h \
+ ngap/ASN_NGAP_CEmodeBrestricted.h \
+ ngap/ASN_NGAP_CNAssistedRANTuning.h \
+ ngap/ASN_NGAP_CNsubgroupID.h \
+ ngap/ASN_NGAP_CNTypeRestrictionsForEquivalent.h \
+ ngap/ASN_NGAP_CNTypeRestrictionsForEquivalentItem.h \
+ ngap/ASN_NGAP_CNTypeRestrictionsForServing.h \
+ ngap/ASN_NGAP_CommonNetworkInstance.h \
+ ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA.h \
+ ngap/ASN_NGAP_CompletedCellsInEAI-EUTRA-Item.h \
+ ngap/ASN_NGAP_CompletedCellsInEAI-NR.h \
+ ngap/ASN_NGAP_CompletedCellsInEAI-NR-Item.h \
+ ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA.h \
+ ngap/ASN_NGAP_CompletedCellsInTAI-EUTRA-Item.h \
+ ngap/ASN_NGAP_CompletedCellsInTAI-NR.h \
+ ngap/ASN_NGAP_CompletedCellsInTAI-NR-Item.h \
+ ngap/ASN_NGAP_ConcurrentWarningMessageInd.h \
+ ngap/ASN_NGAP_ConfidentialityProtectionIndication.h \
+ ngap/ASN_NGAP_ConfidentialityProtectionResult.h \
+ ngap/ASN_NGAP_ConfiguredTACIndication.h \
+ ngap/ASN_NGAP_CoreNetworkAssistanceInformationForInactive.h \
+ ngap/ASN_NGAP_COUNTValueForPDCP-SN12.h \
+ ngap/ASN_NGAP_COUNTValueForPDCP-SN18.h \
+ ngap/ASN_NGAP_CoverageEnhancementLevel.h \
+ ngap/ASN_NGAP_CPTransportLayerInformation.h \
+ ngap/ASN_NGAP_CriticalityDiagnostics.h \
+ ngap/ASN_NGAP_CriticalityDiagnostics-IE-List.h \
+ ngap/ASN_NGAP_CriticalityDiagnostics-IE-Item.h \
+ ngap/ASN_NGAP_CellBasedMDT-NR.h \
+ ngap/ASN_NGAP_CellIdListforMDT-NR.h \
+ ngap/ASN_NGAP_CellBasedMDT-EUTRA.h \
+ ngap/ASN_NGAP_CellBasedQMC.h \
+ ngap/ASN_NGAP_CellIdListforQMC.h \
+ ngap/ASN_NGAP_CellIdListforMDT-EUTRA.h \
+ ngap/ASN_NGAP_DataCodingScheme.h \
+ ngap/ASN_NGAP_DataForwardingAccepted.h \
+ ngap/ASN_NGAP_DataForwardingNotPossible.h \
+ ngap/ASN_NGAP_DataForwardingResponseDRBList.h \
+ ngap/ASN_NGAP_DataForwardingResponseDRBItem.h \
+ ngap/ASN_NGAP_DAPSRequestInfo.h \
+ ngap/ASN_NGAP_DAPSResponseInfoList.h \
+ ngap/ASN_NGAP_DAPSResponseInfoItem.h \
+ ngap/ASN_NGAP_DAPSResponseInfo.h \
+ ngap/ASN_NGAP_DataForwardingResponseERABList.h \
+ ngap/ASN_NGAP_DataForwardingResponseERABListItem.h \
+ ngap/ASN_NGAP_DelayCritical.h \
+ ngap/ASN_NGAP_DL-CP-SecurityInformation.h \
+ ngap/ASN_NGAP_DL-NAS-MAC.h \
+ ngap/ASN_NGAP_DLForwarding.h \
+ ngap/ASN_NGAP_DL-NGU-TNLInformationReused.h \
+ ngap/ASN_NGAP_DirectForwardingPathAvailability.h \
+ ngap/ASN_NGAP_DRB-ID.h \
+ ngap/ASN_NGAP_DRBsSubjectToStatusTransferList.h \
+ ngap/ASN_NGAP_DRBsSubjectToStatusTransferItem.h \
+ ngap/ASN_NGAP_DRBStatusDL.h \
+ ngap/ASN_NGAP_DRBStatusDL12.h \
+ ngap/ASN_NGAP_DRBStatusDL18.h \
+ ngap/ASN_NGAP_DRBStatusUL.h \
+ ngap/ASN_NGAP_DRBStatusUL12.h \
+ ngap/ASN_NGAP_DRBStatusUL18.h \
+ ngap/ASN_NGAP_DRBsToQosFlowsMappingList.h \
+ ngap/ASN_NGAP_DRBsToQosFlowsMappingItem.h \
+ ngap/ASN_NGAP_Dynamic5QIDescriptor.h \
+ ngap/ASN_NGAP_EarlyMeasurement.h \
+ ngap/ASN_NGAP_EarlyStatusTransfer-TransparentContainer.h \
+ ngap/ASN_NGAP_ProcedureStageChoice.h \
+ ngap/ASN_NGAP_FirstDLCount.h \
+ ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-List.h \
+ ngap/ASN_NGAP_DRBsSubjectToEarlyStatusTransfer-Item.h \
+ ngap/ASN_NGAP_EDT-Session.h \
+ ngap/ASN_NGAP_EmergencyAreaID.h \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA.h \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastEUTRA-Item.h \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR.h \
+ ngap/ASN_NGAP_EmergencyAreaIDBroadcastNR-Item.h \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA.h \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledEUTRA-Item.h \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledNR.h \
+ ngap/ASN_NGAP_EmergencyAreaIDCancelledNR-Item.h \
+ ngap/ASN_NGAP_EmergencyAreaIDList.h \
+ ngap/ASN_NGAP_EmergencyAreaIDListForRestart.h \
+ ngap/ASN_NGAP_EmergencyFallbackIndicator.h \
+ ngap/ASN_NGAP_EmergencyFallbackRequestIndicator.h \
+ ngap/ASN_NGAP_EmergencyServiceTargetCN.h \
+ ngap/ASN_NGAP_ENB-ID.h \
+ ngap/ASN_NGAP_Enhanced-CoverageRestriction.h \
+ ngap/ASN_NGAP_Extended-ConnectedTime.h \
+ ngap/ASN_NGAP_EN-DCSONConfigurationTransfer.h \
+ ngap/ASN_NGAP_EndpointIPAddressAndPort.h \
+ ngap/ASN_NGAP_EndIndication.h \
+ ngap/ASN_NGAP_EquivalentPLMNs.h \
+ ngap/ASN_NGAP_EPS-TAC.h \
+ ngap/ASN_NGAP_EPS-TAI.h \
+ ngap/ASN_NGAP_E-RAB-ID.h \
+ ngap/ASN_NGAP_E-RABInformationList.h \
+ ngap/ASN_NGAP_E-RABInformationItem.h \
+ ngap/ASN_NGAP_EUTRACellIdentity.h \
+ ngap/ASN_NGAP_EUTRA-CGI.h \
+ ngap/ASN_NGAP_EUTRA-CGIList.h \
+ ngap/ASN_NGAP_EUTRA-CGIListForWarning.h \
+ ngap/ASN_NGAP_EUTRA-PagingeDRXInformation.h \
+ ngap/ASN_NGAP_EUTRA-Paging-eDRX-Cycle.h \
+ ngap/ASN_NGAP_EUTRA-Paging-Time-Window.h \
+ ngap/ASN_NGAP_EUTRAencryptionAlgorithms.h \
+ ngap/ASN_NGAP_EUTRAintegrityProtectionAlgorithms.h \
+ ngap/ASN_NGAP_EventType.h \
+ ngap/ASN_NGAP_ExcessPacketDelayThresholdConfiguration.h \
+ ngap/ASN_NGAP_ExcessPacketDelayThresholdItem.h \
+ ngap/ASN_NGAP_ExcessPacketDelayThresholdValue.h \
+ ngap/ASN_NGAP_ExpectedActivityPeriod.h \
+ ngap/ASN_NGAP_ExpectedHOInterval.h \
+ ngap/ASN_NGAP_ExpectedIdlePeriod.h \
+ ngap/ASN_NGAP_ExpectedUEActivityBehaviour.h \
+ ngap/ASN_NGAP_ExpectedUEBehaviour.h \
+ ngap/ASN_NGAP_ExpectedUEMobility.h \
+ ngap/ASN_NGAP_ExpectedUEMovingTrajectory.h \
+ ngap/ASN_NGAP_ExpectedUEMovingTrajectoryItem.h \
+ ngap/ASN_NGAP_Extended-AMFName.h \
+ ngap/ASN_NGAP_ExtendedPacketDelayBudget.h \
+ ngap/ASN_NGAP_Extended-RANNodeName.h \
+ ngap/ASN_NGAP_ExtendedRATRestrictionInformation.h \
+ ngap/ASN_NGAP_ExtendedRNC-ID.h \
+ ngap/ASN_NGAP_ExtendedSliceSupportList.h \
+ ngap/ASN_NGAP_ExtendedUEIdentityIndexValue.h \
+ ngap/ASN_NGAP_EventTrigger.h \
+ ngap/ASN_NGAP_EventL1LoggedMDTConfig.h \
+ ngap/ASN_NGAP_MeasurementThresholdL1LoggedMDT.h \
+ ngap/ASN_NGAP_FailureIndication.h \
+ ngap/ASN_NGAP_FiveG-ProSeAuthorized.h \
+ ngap/ASN_NGAP_FiveGProSeDirectDiscovery.h \
+ ngap/ASN_NGAP_FiveGProSeDirectCommunication.h \
+ ngap/ASN_NGAP_FiveGProSeLayer2UEtoNetworkRelay.h \
+ ngap/ASN_NGAP_FiveGProSeLayer3UEtoNetworkRelay.h \
+ ngap/ASN_NGAP_FiveGProSeLayer2RemoteUE.h \
+ ngap/ASN_NGAP_FiveG-ProSePC5QoSParameters.h \
+ ngap/ASN_NGAP_FiveGProSePC5QoSFlowList.h \
+ ngap/ASN_NGAP_FiveGProSePC5QoSFlowItem.h \
+ ngap/ASN_NGAP_FiveGProSePC5FlowBitRates.h \
+ ngap/ASN_NGAP_FiveG-S-TMSI.h \
+ ngap/ASN_NGAP_FiveG-TMSI.h \
+ ngap/ASN_NGAP_FiveQI.h \
+ ngap/ASN_NGAP_ForbiddenAreaInformation.h \
+ ngap/ASN_NGAP_ForbiddenAreaInformation-Item.h \
+ ngap/ASN_NGAP_ForbiddenTACs.h \
+ ngap/ASN_NGAP_FromEUTRANtoNGRAN.h \
+ ngap/ASN_NGAP_FromNGRANtoEUTRAN.h \
+ ngap/ASN_NGAP_GBR-QosInformation.h \
+ ngap/ASN_NGAP_GlobalCable-ID.h \
+ ngap/ASN_NGAP_GlobalCable-ID-new.h \
+ ngap/ASN_NGAP_GlobalENB-ID.h \
+ ngap/ASN_NGAP_GlobalGNB-ID.h \
+ ngap/ASN_NGAP_GlobalN3IWF-ID.h \
+ ngap/ASN_NGAP_GlobalLine-ID.h \
+ ngap/ASN_NGAP_GlobalLineIdentity.h \
+ ngap/ASN_NGAP_GlobalNgENB-ID.h \
+ ngap/ASN_NGAP_GlobalRANNodeID.h \
+ ngap/ASN_NGAP_GlobalTNGF-ID.h \
+ ngap/ASN_NGAP_GlobalTWIF-ID.h \
+ ngap/ASN_NGAP_GlobalW-AGF-ID.h \
+ ngap/ASN_NGAP_GNB-ID.h \
+ ngap/ASN_NGAP_GTP-TEID.h \
+ ngap/ASN_NGAP_GTPTunnel.h \
+ ngap/ASN_NGAP_GUAMI.h \
+ ngap/ASN_NGAP_GUAMIType.h \
+ ngap/ASN_NGAP_HandoverCommandTransfer.h \
+ ngap/ASN_NGAP_HandoverFlag.h \
+ ngap/ASN_NGAP_HandoverPreparationUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_HandoverRequestAcknowledgeTransfer.h \
+ ngap/ASN_NGAP_HandoverRequiredTransfer.h \
+ ngap/ASN_NGAP_HandoverResourceAllocationUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_HandoverType.h \
+ ngap/ASN_NGAP_HashedUEIdentityIndexValue.h \
+ ngap/ASN_NGAP_HFCNode-ID.h \
+ ngap/ASN_NGAP_HFCNode-ID-new.h \
+ ngap/ASN_NGAP_HOReport.h \
+ ngap/ASN_NGAP_Hysteresis.h \
+ ngap/ASN_NGAP_IAB-Authorized.h \
+ ngap/ASN_NGAP_IAB-Supported.h \
+ ngap/ASN_NGAP_IABNodeIndication.h \
+ ngap/ASN_NGAP_IMSVoiceSupportIndicator.h \
+ ngap/ASN_NGAP_IndexToRFSP.h \
+ ngap/ASN_NGAP_InfoOnRecommendedCellsAndRANNodesForPaging.h \
+ ngap/ASN_NGAP_IntegrityProtectionIndication.h \
+ ngap/ASN_NGAP_IntegrityProtectionResult.h \
+ ngap/ASN_NGAP_IntendedNumberOfPagingAttempts.h \
+ ngap/ASN_NGAP_InterfacesToTrace.h \
+ ngap/ASN_NGAP_ImmediateMDTNr.h \
+ ngap/ASN_NGAP_InterSystemFailureIndication.h \
+ ngap/ASN_NGAP_IntersystemSONConfigurationTransfer.h \
+ ngap/ASN_NGAP_IntersystemSONTransferType.h \
+ ngap/ASN_NGAP_IntersystemSONeNBID.h \
+ ngap/ASN_NGAP_IntersystemSONNGRANnodeID.h \
+ ngap/ASN_NGAP_IntersystemSONInformation.h \
+ ngap/ASN_NGAP_IntersystemSONInformationRequest.h \
+ ngap/ASN_NGAP_IntersystemCellActivationRequest.h \
+ ngap/ASN_NGAP_CellsToActivateList.h \
+ ngap/ASN_NGAP_IntersystemResourceStatusRequest.h \
+ ngap/ASN_NGAP_ReportingSystem.h \
+ ngap/ASN_NGAP_EUTRAN-ReportingSystemIEs.h \
+ ngap/ASN_NGAP_NGRAN-ReportingSystemIEs.h \
+ ngap/ASN_NGAP_EUTRAN-CellToReportList.h \
+ ngap/ASN_NGAP_EUTRAN-CellToReportItem.h \
+ ngap/ASN_NGAP_NGRAN-CellToReportList.h \
+ ngap/ASN_NGAP_NGRAN-CellToReportItem.h \
+ ngap/ASN_NGAP_ReportCharacteristics.h \
+ ngap/ASN_NGAP_ReportType.h \
+ ngap/ASN_NGAP_EventBasedReportingIEs.h \
+ ngap/ASN_NGAP_IntersystemResourceThreshold.h \
+ ngap/ASN_NGAP_NumberOfMeasurementReportingLevels.h \
+ ngap/ASN_NGAP_PeriodicReportingIEs.h \
+ ngap/ASN_NGAP_ReportingPeriodicity.h \
+ ngap/ASN_NGAP_IntersystemSONInformationReply.h \
+ ngap/ASN_NGAP_IntersystemCellActivationReply.h \
+ ngap/ASN_NGAP_ActivatedCellList.h \
+ ngap/ASN_NGAP_IntersystemResourceStatusReply.h \
+ ngap/ASN_NGAP_IntersystemSONInformationReport.h \
+ ngap/ASN_NGAP_IntersystemCellStateIndication.h \
+ ngap/ASN_NGAP_NotificationCellList.h \
+ ngap/ASN_NGAP_NotificationCell-Item.h \
+ ngap/ASN_NGAP_IntersystemResourceStatusReport.h \
+ ngap/ASN_NGAP_ResourceStatusReportingSystem.h \
+ ngap/ASN_NGAP_EUTRAN-ReportingStatusIEs.h \
+ ngap/ASN_NGAP_EUTRAN-CellReportList.h \
+ ngap/ASN_NGAP_EUTRAN-CellReportItem.h \
+ ngap/ASN_NGAP_EUTRAN-CompositeAvailableCapacityGroup.h \
+ ngap/ASN_NGAP_CompositeAvailableCapacity.h \
+ ngap/ASN_NGAP_EUTRAN-NumberOfActiveUEs.h \
+ ngap/ASN_NGAP_EUTRAN-RadioResourceStatus.h \
+ ngap/ASN_NGAP_NGRAN-ReportingStatusIEs.h \
+ ngap/ASN_NGAP_NGRAN-CellReportList.h \
+ ngap/ASN_NGAP_NGRAN-CellReportItem.h \
+ ngap/ASN_NGAP_NGRAN-NumberOfActiveUEs.h \
+ ngap/ASN_NGAP_NGRAN-NoofRRCConnections.h \
+ ngap/ASN_NGAP_NGRAN-RadioResourceStatus.h \
+ ngap/ASN_NGAP_InterSystemHOReport.h \
+ ngap/ASN_NGAP_InterSystemHandoverReportType.h \
+ ngap/ASN_NGAP_IntersystemUnnecessaryHO.h \
+ ngap/ASN_NGAP_LAC.h \
+ ngap/ASN_NGAP_LAI.h \
+ ngap/ASN_NGAP_LastVisitedCellInformation.h \
+ ngap/ASN_NGAP_LastVisitedCellItem.h \
+ ngap/ASN_NGAP_LastVisitedEUTRANCellInformation.h \
+ ngap/ASN_NGAP_LastVisitedGERANCellInformation.h \
+ ngap/ASN_NGAP_LastVisitedNGRANCellInformation.h \
+ ngap/ASN_NGAP_LastVisitedPSCellList.h \
+ ngap/ASN_NGAP_LastVisitedPSCellInformation.h \
+ ngap/ASN_NGAP_LastVisitedUTRANCellInformation.h \
+ ngap/ASN_NGAP_LineType.h \
+ ngap/ASN_NGAP_LocationReportingAdditionalInfo.h \
+ ngap/ASN_NGAP_LocationReportingReferenceID.h \
+ ngap/ASN_NGAP_LocationReportingRequestType.h \
+ ngap/ASN_NGAP_LoggedMDTNr.h \
+ ngap/ASN_NGAP_LoggingInterval.h \
+ ngap/ASN_NGAP_LoggingDuration.h \
+ ngap/ASN_NGAP_Links-to-log.h \
+ ngap/ASN_NGAP_LoggedMDTTrigger.h \
+ ngap/ASN_NGAP_LTEM-Indication.h \
+ ngap/ASN_NGAP_LTEUERLFReportContainer.h \
+ ngap/ASN_NGAP_LTEV2XServicesAuthorized.h \
+ ngap/ASN_NGAP_LTEUESidelinkAggregateMaximumBitrate.h \
+ ngap/ASN_NGAP_MaskedIMEISV.h \
+ ngap/ASN_NGAP_MaximumDataBurstVolume.h \
+ ngap/ASN_NGAP_MessageIdentifier.h \
+ ngap/ASN_NGAP_MaximumIntegrityProtectedDataRate.h \
+ ngap/ASN_NGAP_MBS-AreaSessionID.h \
+ ngap/ASN_NGAP_MBS-DataForwardingResponseMRBList.h \
+ ngap/ASN_NGAP_MBS-DataForwardingResponseMRBItem.h \
+ ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestList.h \
+ ngap/ASN_NGAP_MBS-MappingandDataForwardingRequestItem.h \
+ ngap/ASN_NGAP_MBS-QoSFlowList.h \
+ ngap/ASN_NGAP_MRB-ProgressInformation.h \
+ ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupList.h \
+ ngap/ASN_NGAP_MBS-QoSFlowsToBeSetupItem.h \
+ ngap/ASN_NGAP_MBS-ServiceArea.h \
+ ngap/ASN_NGAP_MBS-ServiceAreaInformationList.h \
+ ngap/ASN_NGAP_MBS-ServiceAreaInformationItem.h \
+ ngap/ASN_NGAP_MBS-ServiceAreaInformation.h \
+ ngap/ASN_NGAP_MBS-ServiceAreaCellList.h \
+ ngap/ASN_NGAP_MBS-ServiceAreaTAIList.h \
+ ngap/ASN_NGAP_MBS-SessionID.h \
+ ngap/ASN_NGAP_MBSSessionFailedtoSetupList.h \
+ ngap/ASN_NGAP_MBSSessionFailedtoSetupItem.h \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetList.h \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-SourcetoTargetItem.h \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceList.h \
+ ngap/ASN_NGAP_MBS-ActiveSessionInformation-TargettoSourceItem.h \
+ ngap/ASN_NGAP_MBSSessionSetupOrModFailureTransfer.h \
+ ngap/ASN_NGAP_MBSSessionSetupResponseList.h \
+ ngap/ASN_NGAP_MBSSessionSetupResponseItem.h \
+ ngap/ASN_NGAP_MBSSessionSetupOrModRequestTransfer.h \
+ ngap/ASN_NGAP_MBS-SessionFSAIDList.h \
+ ngap/ASN_NGAP_MBS-SessionFSAID.h \
+ ngap/ASN_NGAP_MBSSessionReleaseResponseTransfer.h \
+ ngap/ASN_NGAP_MBSSessionSetupOrModResponseTransfer.h \
+ ngap/ASN_NGAP_MBS-SupportIndicator.h \
+ ngap/ASN_NGAP_MBS-SessionTNLInfo5GC.h \
+ ngap/ASN_NGAP_MBS-SessionTNLInfo5GCList.h \
+ ngap/ASN_NGAP_MBS-SessionTNLInfo5GCItem.h \
+ ngap/ASN_NGAP_MBS-SessionTNLInfoNGRAN.h \
+ ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANList.h \
+ ngap/ASN_NGAP_MBS-SessionTNLInfoNGRANItem.h \
+ ngap/ASN_NGAP_MBS-DistributionReleaseRequestTransfer.h \
+ ngap/ASN_NGAP_MBS-DistributionSetupRequestTransfer.h \
+ ngap/ASN_NGAP_MBS-DistributionSetupResponseTransfer.h \
+ ngap/ASN_NGAP_MBS-DistributionSetupUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_MBSSessionSetupRequestList.h \
+ ngap/ASN_NGAP_MBSSessionSetupRequestItem.h \
+ ngap/ASN_NGAP_MBSSessionSetuporModifyRequestList.h \
+ ngap/ASN_NGAP_MBSSessionSetuporModifyRequestItem.h \
+ ngap/ASN_NGAP_MBSSessionToReleaseList.h \
+ ngap/ASN_NGAP_MBSSessionToReleaseItem.h \
+ ngap/ASN_NGAP_MBSSessionStatus.h \
+ ngap/ASN_NGAP_MicoAllPLMN.h \
+ ngap/ASN_NGAP_MICOModeIndication.h \
+ ngap/ASN_NGAP_MobilityInformation.h \
+ ngap/ASN_NGAP_ExtendedMobilityInformation.h \
+ ngap/ASN_NGAP_MobilityRestrictionList.h \
+ ngap/ASN_NGAP_MDT-AlignmentInfo.h \
+ ngap/ASN_NGAP_MDTPLMNList.h \
+ ngap/ASN_NGAP_MDTPLMNModificationList.h \
+ ngap/ASN_NGAP_MDT-Configuration.h \
+ ngap/ASN_NGAP_MDT-Configuration-NR.h \
+ ngap/ASN_NGAP_MDT-Configuration-EUTRA.h \
+ ngap/ASN_NGAP_MDT-Activation.h \
+ ngap/ASN_NGAP_MDTModeNr.h \
+ ngap/ASN_NGAP_MDTModeEutra.h \
+ ngap/ASN_NGAP_MeasurementsToActivate.h \
+ ngap/ASN_NGAP_MRB-ID.h \
+ ngap/ASN_NGAP_MulticastSessionActivationRequestTransfer.h \
+ ngap/ASN_NGAP_MulticastSessionDeactivationRequestTransfer.h \
+ ngap/ASN_NGAP_MulticastSessionUpdateRequestTransfer.h \
+ ngap/ASN_NGAP_MulticastGroupPagingAreaList.h \
+ ngap/ASN_NGAP_MulticastGroupPagingAreaItem.h \
+ ngap/ASN_NGAP_MBS-AreaTAIList.h \
+ ngap/ASN_NGAP_MulticastGroupPagingArea.h \
+ ngap/ASN_NGAP_UE-PagingList.h \
+ ngap/ASN_NGAP_UE-PagingItem.h \
+ ngap/ASN_NGAP_M1Configuration.h \
+ ngap/ASN_NGAP_IncludeBeamMeasurementsIndication.h \
+ ngap/ASN_NGAP_MaxNrofRS-IndexesToReport.h \
+ ngap/ASN_NGAP_M1ReportingTrigger.h \
+ ngap/ASN_NGAP_M1ThresholdEventA2.h \
+ ngap/ASN_NGAP_M1ThresholdType.h \
+ ngap/ASN_NGAP_M1PeriodicReporting.h \
+ ngap/ASN_NGAP_M4Configuration.h \
+ ngap/ASN_NGAP_M4ReportAmountMDT.h \
+ ngap/ASN_NGAP_M4period.h \
+ ngap/ASN_NGAP_M5Configuration.h \
+ ngap/ASN_NGAP_M5ReportAmountMDT.h \
+ ngap/ASN_NGAP_M5period.h \
+ ngap/ASN_NGAP_M6Configuration.h \
+ ngap/ASN_NGAP_M6ReportAmountMDT.h \
+ ngap/ASN_NGAP_M6report-Interval.h \
+ ngap/ASN_NGAP_M7Configuration.h \
+ ngap/ASN_NGAP_M7ReportAmountMDT.h \
+ ngap/ASN_NGAP_M7period.h \
+ ngap/ASN_NGAP_MDT-Location-Info.h \
+ ngap/ASN_NGAP_MDT-Location-Information.h \
+ ngap/ASN_NGAP_N3IWF-ID.h \
+ ngap/ASN_NGAP_NAS-PDU.h \
+ ngap/ASN_NGAP_NASSecurityParametersFromNGRAN.h \
+ ngap/ASN_NGAP_NB-IoT-DefaultPagingDRX.h \
+ ngap/ASN_NGAP_NB-IoT-PagingDRX.h \
+ ngap/ASN_NGAP_NB-IoT-Paging-eDRXCycle.h \
+ ngap/ASN_NGAP_NB-IoT-Paging-TimeWindow.h \
+ ngap/ASN_NGAP_NB-IoT-Paging-eDRXInfo.h \
+ ngap/ASN_NGAP_NB-IoT-UEPriority.h \
+ ngap/ASN_NGAP_NetworkInstance.h \
+ ngap/ASN_NGAP_NewSecurityContextInd.h \
+ ngap/ASN_NGAP_NextHopChainingCount.h \
+ ngap/ASN_NGAP_NextPagingAreaScope.h \
+ ngap/ASN_NGAP_NGAPIESupportInformationRequestList.h \
+ ngap/ASN_NGAP_NGAPIESupportInformationRequestItem.h \
+ ngap/ASN_NGAP_NGAPIESupportInformationResponseList.h \
+ ngap/ASN_NGAP_NGAPIESupportInformationResponseItem.h \
+ ngap/ASN_NGAP_NgENB-ID.h \
+ ngap/ASN_NGAP_NotifySourceNGRANNode.h \
+ ngap/ASN_NGAP_NGRAN-CGI.h \
+ ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveList.h \
+ ngap/ASN_NGAP_NGRAN-TNLAssociationToRemoveItem.h \
+ ngap/ASN_NGAP_NGRANTraceID.h \
+ ngap/ASN_NGAP_NID.h \
+ ngap/ASN_NGAP_NonDynamic5QIDescriptor.h \
+ ngap/ASN_NGAP_NotAllowedTACs.h \
+ ngap/ASN_NGAP_NotificationCause.h \
+ ngap/ASN_NGAP_NotificationControl.h \
+ ngap/ASN_NGAP_NPN-AccessInformation.h \
+ ngap/ASN_NGAP_NPN-MobilityInformation.h \
+ ngap/ASN_NGAP_NPN-PagingAssistanceInformation.h \
+ ngap/ASN_NGAP_NPN-Support.h \
+ ngap/ASN_NGAP_NRCellIdentity.h \
+ ngap/ASN_NGAP_NR-CGI.h \
+ ngap/ASN_NGAP_NR-CGIList.h \
+ ngap/ASN_NGAP_NR-CGIListForWarning.h \
+ ngap/ASN_NGAP_NR-PagingeDRXInformation.h \
+ ngap/ASN_NGAP_NR-Paging-eDRX-Cycle.h \
+ ngap/ASN_NGAP_NR-Paging-Time-Window.h \
+ ngap/ASN_NGAP_NRencryptionAlgorithms.h \
+ ngap/ASN_NGAP_NRintegrityProtectionAlgorithms.h \
+ ngap/ASN_NGAP_NRMobilityHistoryReport.h \
+ ngap/ASN_NGAP_NRPPa-PDU.h \
+ ngap/ASN_NGAP_NRUERLFReportContainer.h \
+ ngap/ASN_NGAP_NRNTNTAIInformation.h \
+ ngap/ASN_NGAP_NumberOfBroadcasts.h \
+ ngap/ASN_NGAP_NumberOfBroadcastsRequested.h \
+ ngap/ASN_NGAP_NRARFCN.h \
+ ngap/ASN_NGAP_NRFrequencyBand.h \
+ ngap/ASN_NGAP_NRFrequencyBand-List.h \
+ ngap/ASN_NGAP_NRFrequencyBandItem.h \
+ ngap/ASN_NGAP_NRFrequencyInfo.h \
+ ngap/ASN_NGAP_NR-PCI.h \
+ ngap/ASN_NGAP_NRV2XServicesAuthorized.h \
+ ngap/ASN_NGAP_VehicleUE.h \
+ ngap/ASN_NGAP_PedestrianUE.h \
+ ngap/ASN_NGAP_NRUESidelinkAggregateMaximumBitrate.h \
+ ngap/ASN_NGAP_NSAG-ID.h \
+ ngap/ASN_NGAP_OnboardingSupport.h \
+ ngap/ASN_NGAP_OverloadAction.h \
+ ngap/ASN_NGAP_OverloadResponse.h \
+ ngap/ASN_NGAP_OverloadStartNSSAIList.h \
+ ngap/ASN_NGAP_OverloadStartNSSAIItem.h \
+ ngap/ASN_NGAP_PacketDelayBudget.h \
+ ngap/ASN_NGAP_PacketErrorRate.h \
+ ngap/ASN_NGAP_PacketLossRate.h \
+ ngap/ASN_NGAP_PagingAssisDataforCEcapabUE.h \
+ ngap/ASN_NGAP_PagingAttemptInformation.h \
+ ngap/ASN_NGAP_PagingAttemptCount.h \
+ ngap/ASN_NGAP_PagingCause.h \
+ ngap/ASN_NGAP_PagingCauseIndicationForVoiceService.h \
+ ngap/ASN_NGAP_PagingDRX.h \
+ ngap/ASN_NGAP_PagingOrigin.h \
+ ngap/ASN_NGAP_PagingPriority.h \
+ ngap/ASN_NGAP_PagingProbabilityInformation.h \
+ ngap/ASN_NGAP_PathSwitchRequestAcknowledgeTransfer.h \
+ ngap/ASN_NGAP_PathSwitchRequestSetupFailedTransfer.h \
+ ngap/ASN_NGAP_PathSwitchRequestTransfer.h \
+ ngap/ASN_NGAP_PathSwitchRequestUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_PC5QoSParameters.h \
+ ngap/ASN_NGAP_PC5QoSFlowList.h \
+ ngap/ASN_NGAP_PC5QoSFlowItem.h \
+ ngap/ASN_NGAP_PC5FlowBitRates.h \
+ ngap/ASN_NGAP_PCIListForMDT.h \
+ ngap/ASN_NGAP_PrivacyIndicator.h \
+ ngap/ASN_NGAP_PDUSessionAggregateMaximumBitRate.h \
+ ngap/ASN_NGAP_PDUSessionID.h \
+ ngap/ASN_NGAP_PDUSessionPairID.h \
+ ngap/ASN_NGAP_PDUSessionResourceAdmittedList.h \
+ ngap/ASN_NGAP_PDUSessionResourceAdmittedItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModCfm.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModCfm.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyListModRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToModifyItemModRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeListRESRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToResumeItemRESRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtFail.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtFail.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListCxtRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemCxtRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListHOAck.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemHOAck.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListPSReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemPSReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupListSURes.h \
+ ngap/ASN_NGAP_PDUSessionResourceFailedToSetupItemSURes.h \
+ ngap/ASN_NGAP_PDUSessionResourceHandoverList.h \
+ ngap/ASN_NGAP_PDUSessionResourceHandoverItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceInformationList.h \
+ ngap/ASN_NGAP_PDUSessionResourceInformationItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceListCxtRelCpl.h \
+ ngap/ASN_NGAP_PDUSessionResourceItemCxtRelCpl.h \
+ ngap/ASN_NGAP_PDUSessionResourceListCxtRelReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceItemCxtRelReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceListHORqd.h \
+ ngap/ASN_NGAP_PDUSessionResourceItemHORqd.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyConfirmTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyIndicationUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyRequestTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyResponseTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyIndicationTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModCfm.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModCfm.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModInd.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModInd.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyListModRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyItemModRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyList.h \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyReleasedTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceNotifyTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseCommandTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListNot.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemNot.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListPSAck.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSAck.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListPSFail.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemPSFail.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedListRelRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleasedItemRelRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseResponseTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceResumeListRESReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceResumeItemRESReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceResumeListRESRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceResumeItemRESRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageList.h \
+ ngap/ASN_NGAP_PDUSessionResourceSecondaryRATUsageItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListCxtReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListCxtRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemCxtRes.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListHOReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemHOReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListSUReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemSUReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupListSURes.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupItemSURes.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupRequestTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupResponseTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupUnsuccessfulTransfer.h \
+ ngap/ASN_NGAP_PDUSessionResourceSuspendListSUSReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSuspendItemSUSReq.h \
+ ngap/ASN_NGAP_PDUSessionResourceSwitchedList.h \
+ ngap/ASN_NGAP_PDUSessionResourceSwitchedItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLList.h \
+ ngap/ASN_NGAP_PDUSessionResourceToBeSwitchedDLItem.h \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseListHOCmd.h \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseItemHOCmd.h \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseListRelCmd.h \
+ ngap/ASN_NGAP_PDUSessionResourceToReleaseItemRelCmd.h \
+ ngap/ASN_NGAP_PDUSessionType.h \
+ ngap/ASN_NGAP_PDUSessionUsageReport.h \
+ ngap/ASN_NGAP_PEIPSassistanceInformation.h \
+ ngap/ASN_NGAP_Periodicity.h \
+ ngap/ASN_NGAP_PeriodicRegistrationUpdateTimer.h \
+ ngap/ASN_NGAP_PLMNIdentity.h \
+ ngap/ASN_NGAP_PLMNAreaBasedQMC.h \
+ ngap/ASN_NGAP_PLMNListforQMC.h \
+ ngap/ASN_NGAP_PLMNSupportList.h \
+ ngap/ASN_NGAP_PLMNSupportItem.h \
+ ngap/ASN_NGAP_PNI-NPN-MobilityInformation.h \
+ ngap/ASN_NGAP_PortNumber.h \
+ ngap/ASN_NGAP_Pre-emptionCapability.h \
+ ngap/ASN_NGAP_Pre-emptionVulnerability.h \
+ ngap/ASN_NGAP_PriorityLevelARP.h \
+ ngap/ASN_NGAP_PriorityLevelQos.h \
+ ngap/ASN_NGAP_PWSFailedCellIDList.h \
+ ngap/ASN_NGAP_QMCConfigInfo.h \
+ ngap/ASN_NGAP_QMCDeactivation.h \
+ ngap/ASN_NGAP_QoEReferenceList.h \
+ ngap/ASN_NGAP_QoEReference.h \
+ ngap/ASN_NGAP_QosCharacteristics.h \
+ ngap/ASN_NGAP_QosFlowAcceptedList.h \
+ ngap/ASN_NGAP_QosFlowAcceptedItem.h \
+ ngap/ASN_NGAP_QosFlowAddOrModifyRequestList.h \
+ ngap/ASN_NGAP_QosFlowAddOrModifyRequestItem.h \
+ ngap/ASN_NGAP_QosFlowAddOrModifyResponseList.h \
+ ngap/ASN_NGAP_QosFlowAddOrModifyResponseItem.h \
+ ngap/ASN_NGAP_QosFlowFeedbackList.h \
+ ngap/ASN_NGAP_QosFlowFeedbackItem.h \
+ ngap/ASN_NGAP_QosFlowIdentifier.h \
+ ngap/ASN_NGAP_QosFlowInformationList.h \
+ ngap/ASN_NGAP_QosFlowInformationItem.h \
+ ngap/ASN_NGAP_QosFlowLevelQosParameters.h \
+ ngap/ASN_NGAP_QosMonitoringRequest.h \
+ ngap/ASN_NGAP_QosMonitoringReportingFrequency.h \
+ ngap/ASN_NGAP_QoSFlowList.h \
+ ngap/ASN_NGAP_QosFlowListWithCause.h \
+ ngap/ASN_NGAP_QosFlowWithCauseItem.h \
+ ngap/ASN_NGAP_QosFlowModifyConfirmList.h \
+ ngap/ASN_NGAP_QosFlowModifyConfirmItem.h \
+ ngap/ASN_NGAP_QosFlowNotifyList.h \
+ ngap/ASN_NGAP_QosFlowNotifyItem.h \
+ ngap/ASN_NGAP_QosFlowParametersList.h \
+ ngap/ASN_NGAP_QosFlowParametersItem.h \
+ ngap/ASN_NGAP_QosFlowPerTNLInformation.h \
+ ngap/ASN_NGAP_QosFlowPerTNLInformationList.h \
+ ngap/ASN_NGAP_QosFlowPerTNLInformationItem.h \
+ ngap/ASN_NGAP_QosFlowSetupRequestList.h \
+ ngap/ASN_NGAP_QosFlowSetupRequestItem.h \
+ ngap/ASN_NGAP_QosFlowListWithDataForwarding.h \
+ ngap/ASN_NGAP_QosFlowItemWithDataForwarding.h \
+ ngap/ASN_NGAP_QosFlowToBeForwardedList.h \
+ ngap/ASN_NGAP_QosFlowToBeForwardedItem.h \
+ ngap/ASN_NGAP_QoSFlowsUsageReportList.h \
+ ngap/ASN_NGAP_QoSFlowsUsageReport-Item.h \
+ ngap/ASN_NGAP_Range.h \
+ ngap/ASN_NGAP_RANNodeName.h \
+ ngap/ASN_NGAP_RANNodeNameVisibleString.h \
+ ngap/ASN_NGAP_RANNodeNameUTF8String.h \
+ ngap/ASN_NGAP_RANPagingPriority.h \
+ ngap/ASN_NGAP_RANStatusTransfer-TransparentContainer.h \
+ ngap/ASN_NGAP_RAN-UE-NGAP-ID.h \
+ ngap/ASN_NGAP_RAT-Information.h \
+ ngap/ASN_NGAP_RATRestrictions.h \
+ ngap/ASN_NGAP_RATRestrictions-Item.h \
+ ngap/ASN_NGAP_RATRestrictionInformation.h \
+ ngap/ASN_NGAP_RecommendedCellsForPaging.h \
+ ngap/ASN_NGAP_RecommendedCellList.h \
+ ngap/ASN_NGAP_RecommendedCellItem.h \
+ ngap/ASN_NGAP_RecommendedRANNodesForPaging.h \
+ ngap/ASN_NGAP_RecommendedRANNodeList.h \
+ ngap/ASN_NGAP_RecommendedRANNodeItem.h \
+ ngap/ASN_NGAP_RedCapIndication.h \
+ ngap/ASN_NGAP_RedirectionVoiceFallback.h \
+ ngap/ASN_NGAP_RedundantPDUSessionInformation.h \
+ ngap/ASN_NGAP_RedundantQosFlowIndicator.h \
+ ngap/ASN_NGAP_ReflectiveQosAttribute.h \
+ ngap/ASN_NGAP_RelativeAMFCapacity.h \
+ ngap/ASN_NGAP_ReportArea.h \
+ ngap/ASN_NGAP_RepetitionPeriod.h \
+ ngap/ASN_NGAP_ResetAll.h \
+ ngap/ASN_NGAP_ReportAmountMDT.h \
+ ngap/ASN_NGAP_ReportIntervalMDT.h \
+ ngap/ASN_NGAP_ExtendedReportIntervalMDT.h \
+ ngap/ASN_NGAP_ResetType.h \
+ ngap/ASN_NGAP_RGLevelWirelineAccessCharacteristics.h \
+ ngap/ASN_NGAP_RNC-ID.h \
+ ngap/ASN_NGAP_RoutingID.h \
+ ngap/ASN_NGAP_RRCContainer.h \
+ ngap/ASN_NGAP_RRCEstablishmentCause.h \
+ ngap/ASN_NGAP_RRCInactiveTransitionReportRequest.h \
+ ngap/ASN_NGAP_RRCState.h \
+ ngap/ASN_NGAP_RSN.h \
+ ngap/ASN_NGAP_RIMInformationTransfer.h \
+ ngap/ASN_NGAP_RIMInformation.h \
+ ngap/ASN_NGAP_GNBSetID.h \
+ ngap/ASN_NGAP_ScheduledCommunicationTime.h \
+ ngap/ASN_NGAP_SCTP-TLAs.h \
+ ngap/ASN_NGAP_SD.h \
+ ngap/ASN_NGAP_SecondaryRATUsageInformation.h \
+ ngap/ASN_NGAP_SecondaryRATDataUsageReportTransfer.h \
+ ngap/ASN_NGAP_SecurityContext.h \
+ ngap/ASN_NGAP_SecurityIndication.h \
+ ngap/ASN_NGAP_SecurityKey.h \
+ ngap/ASN_NGAP_SecurityResult.h \
+ ngap/ASN_NGAP_SensorMeasurementConfiguration.h \
+ ngap/ASN_NGAP_SensorMeasConfigNameList.h \
+ ngap/ASN_NGAP_SensorMeasConfigNameItem.h \
+ ngap/ASN_NGAP_SensorMeasConfig.h \
+ ngap/ASN_NGAP_SensorNameConfig.h \
+ ngap/ASN_NGAP_SerialNumber.h \
+ ngap/ASN_NGAP_ServedGUAMIList.h \
+ ngap/ASN_NGAP_ServedGUAMIItem.h \
+ ngap/ASN_NGAP_ServiceAreaInformation.h \
+ ngap/ASN_NGAP_ServiceAreaInformation-Item.h \
+ ngap/ASN_NGAP_ServiceType.h \
+ ngap/ASN_NGAP_SgNB-UE-X2AP-ID.h \
+ ngap/ASN_NGAP_SharedNGU-MulticastTNLInformation.h \
+ ngap/ASN_NGAP_SliceOverloadList.h \
+ ngap/ASN_NGAP_SliceOverloadItem.h \
+ ngap/ASN_NGAP_SliceSupportList.h \
+ ngap/ASN_NGAP_SliceSupportItem.h \
+ ngap/ASN_NGAP_SliceSupportListQMC.h \
+ ngap/ASN_NGAP_SliceSupportQMC-Item.h \
+ ngap/ASN_NGAP_SNPN-MobilityInformation.h \
+ ngap/ASN_NGAP_S-NSSAI.h \
+ ngap/ASN_NGAP_SONConfigurationTransfer.h \
+ ngap/ASN_NGAP_SONInformation.h \
+ ngap/ASN_NGAP_SONInformationReply.h \
+ ngap/ASN_NGAP_SONInformationReport.h \
+ ngap/ASN_NGAP_SuccessfulHandoverReportList.h \
+ ngap/ASN_NGAP_SuccessfulHandoverReport-Item.h \
+ ngap/ASN_NGAP_SONInformationRequest.h \
+ ngap/ASN_NGAP_SourceNGRANNode-ToTargetNGRANNode-TransparentContainer.h \
+ ngap/ASN_NGAP_SourceNodeID.h \
+ ngap/ASN_NGAP_SourceOfUEActivityBehaviourInformation.h \
+ ngap/ASN_NGAP_SourceRANNodeID.h \
+ ngap/ASN_NGAP_SourceToTarget-TransparentContainer.h \
+ ngap/ASN_NGAP_SourceToTarget-AMFInformationReroute.h \
+ ngap/ASN_NGAP_SRVCCOperationPossible.h \
+ ngap/ASN_NGAP_ConfiguredNSSAI.h \
+ ngap/ASN_NGAP_RejectedNSSAIinPLMN.h \
+ ngap/ASN_NGAP_RejectedNSSAIinTA.h \
+ ngap/ASN_NGAP_SST.h \
+ ngap/ASN_NGAP_SupportedTAList.h \
+ ngap/ASN_NGAP_SupportedTAItem.h \
+ ngap/ASN_NGAP_SuspendIndicator.h \
+ ngap/ASN_NGAP_Suspend-Request-Indication.h \
+ ngap/ASN_NGAP_Suspend-Response-Indication.h \
+ ngap/ASN_NGAP_SurvivalTime.h \
+ ngap/ASN_NGAP_TAC.h \
+ ngap/ASN_NGAP_TACListInNRNTN.h \
+ ngap/ASN_NGAP_TAI.h \
+ ngap/ASN_NGAP_TAIBroadcastEUTRA.h \
+ ngap/ASN_NGAP_TAIBroadcastEUTRA-Item.h \
+ ngap/ASN_NGAP_TAIBroadcastNR.h \
+ ngap/ASN_NGAP_TAIBroadcastNR-Item.h \
+ ngap/ASN_NGAP_TAICancelledEUTRA.h \
+ ngap/ASN_NGAP_TAICancelledEUTRA-Item.h \
+ ngap/ASN_NGAP_TAICancelledNR.h \
+ ngap/ASN_NGAP_TAICancelledNR-Item.h \
+ ngap/ASN_NGAP_TAIListForInactive.h \
+ ngap/ASN_NGAP_TAIListForInactiveItem.h \
+ ngap/ASN_NGAP_TAIListForPaging.h \
+ ngap/ASN_NGAP_TAIListForPagingItem.h \
+ ngap/ASN_NGAP_TAIListForRestart.h \
+ ngap/ASN_NGAP_TAIListForWarning.h \
+ ngap/ASN_NGAP_TAINSAGSupportList.h \
+ ngap/ASN_NGAP_TAINSAGSupportItem.h \
+ ngap/ASN_NGAP_TargeteNB-ID.h \
+ ngap/ASN_NGAP_TargetHomeENB-ID.h \
+ ngap/ASN_NGAP_TargetID.h \
+ ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-TransparentContainer.h \
+ ngap/ASN_NGAP_TargetNGRANNode-ToSourceNGRANNode-FailureTransparentContainer.h \
+ ngap/ASN_NGAP_TargetNSSAI.h \
+ ngap/ASN_NGAP_TargetNSSAI-Item.h \
+ ngap/ASN_NGAP_TargetNSSAIInformation.h \
+ ngap/ASN_NGAP_TargetRANNodeID.h \
+ ngap/ASN_NGAP_TargetRANNodeID-RIM.h \
+ ngap/ASN_NGAP_TargetRANNodeID-SON.h \
+ ngap/ASN_NGAP_TargetRNC-ID.h \
+ ngap/ASN_NGAP_TargetToSource-TransparentContainer.h \
+ ngap/ASN_NGAP_TargettoSource-Failure-TransparentContainer.h \
+ ngap/ASN_NGAP_TimerApproachForGUAMIRemoval.h \
+ ngap/ASN_NGAP_TimeStamp.h \
+ ngap/ASN_NGAP_TimeSyncAssistanceInfo.h \
+ ngap/ASN_NGAP_TimeToWait.h \
+ ngap/ASN_NGAP_TimeUEStayedInCell.h \
+ ngap/ASN_NGAP_TimeUEStayedInCellEnhancedGranularity.h \
+ ngap/ASN_NGAP_TMGI.h \
+ ngap/ASN_NGAP_TNAP-ID.h \
+ ngap/ASN_NGAP_TNGF-ID.h \
+ ngap/ASN_NGAP_TNLAddressWeightFactor.h \
+ ngap/ASN_NGAP_TNLAssociationList.h \
+ ngap/ASN_NGAP_TNLAssociationItem.h \
+ ngap/ASN_NGAP_TNLAssociationUsage.h \
+ ngap/ASN_NGAP_TooearlyIntersystemHO.h \
+ ngap/ASN_NGAP_TraceActivation.h \
+ ngap/ASN_NGAP_TraceDepth.h \
+ ngap/ASN_NGAP_TrafficLoadReductionIndication.h \
+ ngap/ASN_NGAP_TransportLayerAddress.h \
+ ngap/ASN_NGAP_TypeOfError.h \
+ ngap/ASN_NGAP_TAIBasedMDT.h \
+ ngap/ASN_NGAP_TAIListforMDT.h \
+ ngap/ASN_NGAP_TAIBasedQMC.h \
+ ngap/ASN_NGAP_TAIListforQMC.h \
+ ngap/ASN_NGAP_TABasedQMC.h \
+ ngap/ASN_NGAP_TAListforQMC.h \
+ ngap/ASN_NGAP_TABasedMDT.h \
+ ngap/ASN_NGAP_TAListforMDT.h \
+ ngap/ASN_NGAP_Threshold-RSRP.h \
+ ngap/ASN_NGAP_Threshold-RSRQ.h \
+ ngap/ASN_NGAP_Threshold-SINR.h \
+ ngap/ASN_NGAP_TimeToTrigger.h \
+ ngap/ASN_NGAP_TWAP-ID.h \
+ ngap/ASN_NGAP_TWIF-ID.h \
+ ngap/ASN_NGAP_TSCAssistanceInformation.h \
+ ngap/ASN_NGAP_TSCTrafficCharacteristics.h \
+ ngap/ASN_NGAP_UEAggregateMaximumBitRate.h \
+ ngap/ASN_NGAP_UEAppLayerMeasInfoList.h \
+ ngap/ASN_NGAP_UEAppLayerMeasInfoItem.h \
+ ngap/ASN_NGAP_UEAppLayerMeasConfigInfo.h \
+ ngap/ASN_NGAP_UE-associatedLogicalNG-connectionList.h \
+ ngap/ASN_NGAP_UE-associatedLogicalNG-connectionItem.h \
+ ngap/ASN_NGAP_UECapabilityInfoRequest.h \
+ ngap/ASN_NGAP_UEContextRequest.h \
+ ngap/ASN_NGAP_UEContextResumeRequestTransfer.h \
+ ngap/ASN_NGAP_UEContextResumeResponseTransfer.h \
+ ngap/ASN_NGAP_UEContextSuspendRequestTransfer.h \
+ ngap/ASN_NGAP_UE-DifferentiationInfo.h \
+ ngap/ASN_NGAP_UEHistoryInformation.h \
+ ngap/ASN_NGAP_UEHistoryInformationFromTheUE.h \
+ ngap/ASN_NGAP_UEIdentityIndexValue.h \
+ ngap/ASN_NGAP_UE-NGAP-IDs.h \
+ ngap/ASN_NGAP_UE-NGAP-ID-pair.h \
+ ngap/ASN_NGAP_UEPagingIdentity.h \
+ ngap/ASN_NGAP_UEPresence.h \
+ ngap/ASN_NGAP_UEPresenceInAreaOfInterestList.h \
+ ngap/ASN_NGAP_UEPresenceInAreaOfInterestItem.h \
+ ngap/ASN_NGAP_UERadioCapability.h \
+ ngap/ASN_NGAP_UERadioCapabilityForPaging.h \
+ ngap/ASN_NGAP_UERadioCapabilityForPagingOfNB-IoT.h \
+ ngap/ASN_NGAP_UERadioCapabilityForPagingOfNR.h \
+ ngap/ASN_NGAP_UERadioCapabilityForPagingOfEUTRA.h \
+ ngap/ASN_NGAP_UERadioCapabilityID.h \
+ ngap/ASN_NGAP_UERetentionInformation.h \
+ ngap/ASN_NGAP_UERLFReportContainer.h \
+ ngap/ASN_NGAP_UESecurityCapabilities.h \
+ ngap/ASN_NGAP_UESliceMaximumBitRateList.h \
+ ngap/ASN_NGAP_UESliceMaximumBitRateItem.h \
+ ngap/ASN_NGAP_UE-UP-CIoT-Support.h \
+ ngap/ASN_NGAP_UL-CP-SecurityInformation.h \
+ ngap/ASN_NGAP_UL-NAS-MAC.h \
+ ngap/ASN_NGAP_UL-NAS-Count.h \
+ ngap/ASN_NGAP_UL-NGU-UP-TNLModifyList.h \
+ ngap/ASN_NGAP_UL-NGU-UP-TNLModifyItem.h \
+ ngap/ASN_NGAP_UnavailableGUAMIList.h \
+ ngap/ASN_NGAP_UnavailableGUAMIItem.h \
+ ngap/ASN_NGAP_ULForwarding.h \
+ ngap/ASN_NGAP_UpdateFeedback.h \
+ ngap/ASN_NGAP_UPTransportLayerInformation.h \
+ ngap/ASN_NGAP_UPTransportLayerInformationList.h \
+ ngap/ASN_NGAP_UPTransportLayerInformationItem.h \
+ ngap/ASN_NGAP_UPTransportLayerInformationPairList.h \
+ ngap/ASN_NGAP_UPTransportLayerInformationPairItem.h \
+ ngap/ASN_NGAP_URI-address.h \
+ ngap/ASN_NGAP_UserLocationInformation.h \
+ ngap/ASN_NGAP_UserLocationInformationEUTRA.h \
+ ngap/ASN_NGAP_UserLocationInformationN3IWF.h \
+ ngap/ASN_NGAP_UserLocationInformationTNGF.h \
+ ngap/ASN_NGAP_UserLocationInformationTWIF.h \
+ ngap/ASN_NGAP_UserLocationInformationW-AGF.h \
+ ngap/ASN_NGAP_UserLocationInformationNR.h \
+ ngap/ASN_NGAP_UserPlaneSecurityInformation.h \
+ ngap/ASN_NGAP_VolumeTimedReportList.h \
+ ngap/ASN_NGAP_VolumeTimedReport-Item.h \
+ ngap/ASN_NGAP_W-AGF-ID.h \
+ ngap/ASN_NGAP_WarningAreaCoordinates.h \
+ ngap/ASN_NGAP_WarningAreaList.h \
+ ngap/ASN_NGAP_WarningMessageContents.h \
+ ngap/ASN_NGAP_WarningSecurityInfo.h \
+ ngap/ASN_NGAP_WarningType.h \
+ ngap/ASN_NGAP_WLANMeasurementConfiguration.h \
+ ngap/ASN_NGAP_WLANMeasConfigNameList.h \
+ ngap/ASN_NGAP_WLANMeasConfigNameItem.h \
+ ngap/ASN_NGAP_WLANMeasConfig.h \
+ ngap/ASN_NGAP_WLANName.h \
+ ngap/ASN_NGAP_WUS-Assistance-Information.h \
+ ngap/ASN_NGAP_XnExtTLAs.h \
+ ngap/ASN_NGAP_XnExtTLA-Item.h \
+ ngap/ASN_NGAP_XnGTP-TLAs.h \
+ ngap/ASN_NGAP_XnTLAs.h \
+ ngap/ASN_NGAP_XnTNLConfigurationInfo.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupRequest.h \
+ ngap/ASN_NGAP_PDUSessionResourceSetupResponse.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseCommand.h \
+ ngap/ASN_NGAP_PDUSessionResourceReleaseResponse.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyRequest.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyResponse.h \
+ ngap/ASN_NGAP_PDUSessionResourceNotify.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyIndication.h \
+ ngap/ASN_NGAP_PDUSessionResourceModifyConfirm.h \
+ ngap/ASN_NGAP_InitialContextSetupRequest.h \
+ ngap/ASN_NGAP_InitialContextSetupResponse.h \
+ ngap/ASN_NGAP_InitialContextSetupFailure.h \
+ ngap/ASN_NGAP_UEContextReleaseRequest.h \
+ ngap/ASN_NGAP_UEContextReleaseCommand.h \
+ ngap/ASN_NGAP_UEContextReleaseComplete.h \
+ ngap/ASN_NGAP_UEContextResumeRequest.h \
+ ngap/ASN_NGAP_UEContextResumeResponse.h \
+ ngap/ASN_NGAP_UEContextResumeFailure.h \
+ ngap/ASN_NGAP_UEContextSuspendRequest.h \
+ ngap/ASN_NGAP_UEContextSuspendResponse.h \
+ ngap/ASN_NGAP_UEContextSuspendFailure.h \
+ ngap/ASN_NGAP_UEContextModificationRequest.h \
+ ngap/ASN_NGAP_UEContextModificationResponse.h \
+ ngap/ASN_NGAP_UEContextModificationFailure.h \
+ ngap/ASN_NGAP_RRCInactiveTransitionReport.h \
+ ngap/ASN_NGAP_RetrieveUEInformation.h \
+ ngap/ASN_NGAP_UEInformationTransfer.h \
+ ngap/ASN_NGAP_RANCPRelocationIndication.h \
+ ngap/ASN_NGAP_HandoverRequired.h \
+ ngap/ASN_NGAP_HandoverCommand.h \
+ ngap/ASN_NGAP_HandoverPreparationFailure.h \
+ ngap/ASN_NGAP_HandoverRequest.h \
+ ngap/ASN_NGAP_HandoverRequestAcknowledge.h \
+ ngap/ASN_NGAP_HandoverFailure.h \
+ ngap/ASN_NGAP_HandoverNotify.h \
+ ngap/ASN_NGAP_PathSwitchRequest.h \
+ ngap/ASN_NGAP_PathSwitchRequestAcknowledge.h \
+ ngap/ASN_NGAP_PathSwitchRequestFailure.h \
+ ngap/ASN_NGAP_HandoverCancel.h \
+ ngap/ASN_NGAP_HandoverCancelAcknowledge.h \
+ ngap/ASN_NGAP_HandoverSuccess.h \
+ ngap/ASN_NGAP_UplinkRANEarlyStatusTransfer.h \
+ ngap/ASN_NGAP_DownlinkRANEarlyStatusTransfer.h \
+ ngap/ASN_NGAP_UplinkRANStatusTransfer.h \
+ ngap/ASN_NGAP_DownlinkRANStatusTransfer.h \
+ ngap/ASN_NGAP_Paging.h \
+ ngap/ASN_NGAP_InitialUEMessage.h \
+ ngap/ASN_NGAP_DownlinkNASTransport.h \
+ ngap/ASN_NGAP_UplinkNASTransport.h \
+ ngap/ASN_NGAP_NASNonDeliveryIndication.h \
+ ngap/ASN_NGAP_RerouteNASRequest.h \
+ ngap/ASN_NGAP_NGSetupRequest.h \
+ ngap/ASN_NGAP_NGSetupResponse.h \
+ ngap/ASN_NGAP_NGSetupFailure.h \
+ ngap/ASN_NGAP_RANConfigurationUpdate.h \
+ ngap/ASN_NGAP_RANConfigurationUpdateAcknowledge.h \
+ ngap/ASN_NGAP_RANConfigurationUpdateFailure.h \
+ ngap/ASN_NGAP_AMFConfigurationUpdate.h \
+ ngap/ASN_NGAP_AMFConfigurationUpdateAcknowledge.h \
+ ngap/ASN_NGAP_AMFConfigurationUpdateFailure.h \
+ ngap/ASN_NGAP_AMFStatusIndication.h \
+ ngap/ASN_NGAP_NGReset.h \
+ ngap/ASN_NGAP_NGResetAcknowledge.h \
+ ngap/ASN_NGAP_ErrorIndication.h \
+ ngap/ASN_NGAP_OverloadStart.h \
+ ngap/ASN_NGAP_OverloadStop.h \
+ ngap/ASN_NGAP_UplinkRANConfigurationTransfer.h \
+ ngap/ASN_NGAP_DownlinkRANConfigurationTransfer.h \
+ ngap/ASN_NGAP_WriteReplaceWarningRequest.h \
+ ngap/ASN_NGAP_WriteReplaceWarningResponse.h \
+ ngap/ASN_NGAP_PWSCancelRequest.h \
+ ngap/ASN_NGAP_PWSCancelResponse.h \
+ ngap/ASN_NGAP_PWSRestartIndication.h \
+ ngap/ASN_NGAP_PWSFailureIndication.h \
+ ngap/ASN_NGAP_DownlinkUEAssociatedNRPPaTransport.h \
+ ngap/ASN_NGAP_UplinkUEAssociatedNRPPaTransport.h \
+ ngap/ASN_NGAP_DownlinkNonUEAssociatedNRPPaTransport.h \
+ ngap/ASN_NGAP_UplinkNonUEAssociatedNRPPaTransport.h \
+ ngap/ASN_NGAP_TraceStart.h \
+ ngap/ASN_NGAP_TraceFailureIndication.h \
+ ngap/ASN_NGAP_DeactivateTrace.h \
+ ngap/ASN_NGAP_CellTrafficTrace.h \
+ ngap/ASN_NGAP_LocationReportingControl.h \
+ ngap/ASN_NGAP_LocationReportingFailureIndication.h \
+ ngap/ASN_NGAP_LocationReport.h \
+ ngap/ASN_NGAP_UETNLABindingReleaseRequest.h \
+ ngap/ASN_NGAP_UERadioCapabilityInfoIndication.h \
+ ngap/ASN_NGAP_UERadioCapabilityCheckRequest.h \
+ ngap/ASN_NGAP_UERadioCapabilityCheckResponse.h \
+ ngap/ASN_NGAP_PrivateMessage.h \
+ ngap/ASN_NGAP_SecondaryRATDataUsageReport.h \
+ ngap/ASN_NGAP_UplinkRIMInformationTransfer.h \
+ ngap/ASN_NGAP_DownlinkRIMInformationTransfer.h \
+ ngap/ASN_NGAP_ConnectionEstablishmentIndication.h \
+ ngap/ASN_NGAP_UERadioCapabilityIDMappingRequest.h \
+ ngap/ASN_NGAP_UERadioCapabilityIDMappingResponse.h \
+ ngap/ASN_NGAP_AMFCPRelocationIndication.h \
+ ngap/ASN_NGAP_BroadcastSessionSetupRequest.h \
+ ngap/ASN_NGAP_BroadcastSessionSetupResponse.h \
+ ngap/ASN_NGAP_BroadcastSessionSetupFailure.h \
+ ngap/ASN_NGAP_BroadcastSessionModificationRequest.h \
+ ngap/ASN_NGAP_BroadcastSessionModificationResponse.h \
+ ngap/ASN_NGAP_BroadcastSessionModificationFailure.h \
+ ngap/ASN_NGAP_BroadcastSessionReleaseRequest.h \
+ ngap/ASN_NGAP_BroadcastSessionReleaseRequired.h \
+ ngap/ASN_NGAP_BroadcastSessionReleaseResponse.h \
+ ngap/ASN_NGAP_DistributionSetupRequest.h \
+ ngap/ASN_NGAP_DistributionSetupResponse.h \
+ ngap/ASN_NGAP_DistributionSetupFailure.h \
+ ngap/ASN_NGAP_DistributionReleaseRequest.h \
+ ngap/ASN_NGAP_DistributionReleaseResponse.h \
+ ngap/ASN_NGAP_MulticastSessionActivationRequest.h \
+ ngap/ASN_NGAP_MulticastSessionActivationResponse.h \
+ ngap/ASN_NGAP_MulticastSessionActivationFailure.h \
+ ngap/ASN_NGAP_MulticastSessionDeactivationRequest.h \
+ ngap/ASN_NGAP_MulticastSessionDeactivationResponse.h \
+ ngap/ASN_NGAP_MulticastSessionUpdateRequest.h \
+ ngap/ASN_NGAP_MulticastSessionUpdateResponse.h \
+ ngap/ASN_NGAP_MulticastSessionUpdateFailure.h \
+ ngap/ASN_NGAP_MulticastGroupPaging.h \
+ ngap/ASN_NGAP_NGAP-PDU.h \
+ ngap/ASN_NGAP_InitiatingMessage.h \
+ ngap/ASN_NGAP_SuccessfulOutcome.h \
+ ngap/ASN_NGAP_UnsuccessfulOutcome.h
+
+ASN_MODULE_HDRS+=ngap/ANY.h
+ASN_MODULE_SRCS+=ngap/ANY.c
+ASN_MODULE_HDRS+=ngap/OCTET_STRING.h
+ASN_MODULE_HDRS+=ngap/OPEN_TYPE.h
+ASN_MODULE_SRCS+=ngap/OPEN_TYPE.c
+ASN_MODULE_HDRS+=ngap/constr_CHOICE.h
+ASN_MODULE_HDRS+=ngap/BOOLEAN.h
+ASN_MODULE_SRCS+=ngap/BOOLEAN.c
+ASN_MODULE_HDRS+=ngap/INTEGER.h
+ASN_MODULE_SRCS+=ngap/INTEGER.c
+ASN_MODULE_HDRS+=ngap/NULL.h
+ASN_MODULE_SRCS+=ngap/NULL.c
+ASN_MODULE_HDRS+=ngap/NativeEnumerated.h
+ASN_MODULE_SRCS+=ngap/NativeEnumerated.c
+ASN_MODULE_HDRS+=ngap/NativeInteger.h
+ASN_MODULE_SRCS+=ngap/NativeInteger.c
+ASN_MODULE_HDRS+=ngap/OBJECT_IDENTIFIER.h
+ASN_MODULE_SRCS+=ngap/OBJECT_IDENTIFIER.c
+ASN_MODULE_HDRS+=ngap/PrintableString.h
+ASN_MODULE_SRCS+=ngap/PrintableString.c
+ASN_MODULE_HDRS+=ngap/UTF8String.h
+ASN_MODULE_SRCS+=ngap/UTF8String.c
+ASN_MODULE_HDRS+=ngap/VisibleString.h
+ASN_MODULE_SRCS+=ngap/VisibleString.c
+ASN_MODULE_HDRS+=ngap/asn_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=ngap/asn_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=ngap/asn_SET_OF.h
+ASN_MODULE_SRCS+=ngap/asn_SET_OF.c
+ASN_MODULE_SRCS+=ngap/constr_CHOICE.c
+ASN_MODULE_HDRS+=ngap/constr_SEQUENCE.h
+ASN_MODULE_SRCS+=ngap/constr_SEQUENCE.c
+ASN_MODULE_HDRS+=ngap/constr_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=ngap/constr_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=ngap/constr_SET_OF.h
+ASN_MODULE_SRCS+=ngap/constr_SET_OF.c
+ASN_MODULE_HDRS+=ngap/asn_application.h
+ASN_MODULE_SRCS+=ngap/asn_application.c
+ASN_MODULE_HDRS+=ngap/asn_ioc.h
+ASN_MODULE_HDRS+=ngap/asn_system.h
+ASN_MODULE_HDRS+=ngap/asn_codecs.h
+ASN_MODULE_HDRS+=ngap/asn_internal.h
+ASN_MODULE_SRCS+=ngap/asn_internal.c
+ASN_MODULE_HDRS+=ngap/asn_random_fill.h
+ASN_MODULE_SRCS+=ngap/asn_random_fill.c
+ASN_MODULE_HDRS+=ngap/asn_bit_data.h
+ASN_MODULE_SRCS+=ngap/asn_bit_data.c
+ASN_MODULE_SRCS+=ngap/OCTET_STRING.c
+ASN_MODULE_HDRS+=ngap/BIT_STRING.h
+ASN_MODULE_SRCS+=ngap/BIT_STRING.c
+ASN_MODULE_SRCS+=ngap/asn_codecs_prim.c
+ASN_MODULE_HDRS+=ngap/asn_codecs_prim.h
+ASN_MODULE_HDRS+=ngap/ber_tlv_length.h
+ASN_MODULE_SRCS+=ngap/ber_tlv_length.c
+ASN_MODULE_HDRS+=ngap/ber_tlv_tag.h
+ASN_MODULE_SRCS+=ngap/ber_tlv_tag.c
+ASN_MODULE_HDRS+=ngap/ber_decoder.h
+ASN_MODULE_SRCS+=ngap/ber_decoder.c
+ASN_MODULE_HDRS+=ngap/der_encoder.h
+ASN_MODULE_SRCS+=ngap/der_encoder.c
+ASN_MODULE_HDRS+=ngap/constr_TYPE.h
+ASN_MODULE_SRCS+=ngap/constr_TYPE.c
+ASN_MODULE_HDRS+=ngap/constraints.h
+ASN_MODULE_SRCS+=ngap/constraints.c
+ASN_MODULE_HDRS+=ngap/xer_support.h
+ASN_MODULE_SRCS+=ngap/xer_support.c
+ASN_MODULE_HDRS+=ngap/xer_decoder.h
+ASN_MODULE_SRCS+=ngap/xer_decoder.c
+ASN_MODULE_HDRS+=ngap/xer_encoder.h
+ASN_MODULE_SRCS+=ngap/xer_encoder.c
+ASN_MODULE_HDRS+=ngap/per_support.h
+ASN_MODULE_SRCS+=ngap/per_support.c
+ASN_MODULE_HDRS+=ngap/per_decoder.h
+ASN_MODULE_SRCS+=ngap/per_decoder.c
+ASN_MODULE_HDRS+=ngap/per_encoder.h
+ASN_MODULE_SRCS+=ngap/per_encoder.c
+ASN_MODULE_HDRS+=ngap/per_opentype.h
+ASN_MODULE_SRCS+=ngap/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)/ngap/
+libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
+libasncodec_la_LDFLAGS=-lm
diff --git a/src/asn/asn1c/NULL.c b/src/asn/asn1c/NULL.c
new file mode 100644
index 0000000..d882500
--- /dev/null
+++ b/src/asn/asn1c/NULL.c
@@ -0,0 +1,299 @@
+/*-
+ * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+#include /* Implemented in terms of BOOLEAN type */
+
+/*
+ * NULL basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NULL_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (5 << 2))
+};
+asn_TYPE_operation_t asn_OP_NULL = {
+ BOOLEAN_free,
+ NULL_print,
+ NULL_compare,
+ BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */
+ NULL_encode_der, /* Special handling of DER encoding */
+ NULL_decode_xer,
+ NULL_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ NULL_decode_oer,
+ NULL_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ NULL_decode_uper, /* Unaligned PER decoder */
+ NULL_encode_uper, /* Unaligned PER encoder */
+ NULL_decode_aper, /* Aligned PER decoder */
+ NULL_encode_aper, /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ NULL_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NULL = {
+ "NULL",
+ "NULL",
+ &asn_OP_NULL,
+ asn_DEF_NULL_tags,
+ sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
+ asn_DEF_NULL_tags, /* Same as above */
+ sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+asn_enc_rval_t
+NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode,
+ ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t erval;
+
+ erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key);
+ if(erval.encoded == -1) {
+ erval.failed_type = td;
+ erval.structure_ptr = ptr;
+ }
+
+ ASN__ENCODED_OK(erval);
+}
+
+asn_enc_rval_t
+NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ asn_enc_rval_t er;
+
+ (void)td;
+ (void)sptr;
+ (void)ilevel;
+ (void)flags;
+ (void)cb;
+ (void)app_key;
+
+ /* XMLNullValue is empty */
+ er.encoded = 0;
+ ASN__ENCODED_OK(er);
+}
+
+
+static enum xer_pbd_rval
+NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+ const void *chunk_buf, size_t chunk_size) {
+ (void)td;
+ (void)sptr;
+ (void)chunk_buf; /* Going to be empty according to the rules below. */
+
+ /*
+ * There must be no content in self-terminating tag.
+ */
+ if(chunk_size)
+ return XPBD_BROKEN_ENCODING;
+ else
+ return XPBD_BODY_CONSUMED;
+}
+
+asn_dec_rval_t
+NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ return xer_decode_primitive(opt_codec_ctx, td,
+ sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
+ NULL__xer_body_decode);
+}
+
+int
+NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) {
+ (void)td;
+ (void)a;
+ (void)b;
+ return 0;
+}
+
+int
+NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(sptr) {
+ return (cb("", 9, app_key) < 0) ? -1 : 0;
+ } else {
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+asn_dec_rval_t
+NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, void **sptr,
+ const void *ptr, size_t size) {
+ asn_dec_rval_t rv = {RC_OK, 0};
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+ (void)ptr;
+ (void)size;
+
+ if(!*sptr) {
+ *sptr = MALLOC(sizeof(NULL_t));
+ if(*sptr) {
+ *(NULL_t *)*sptr = 0;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ return rv;
+}
+
+asn_enc_rval_t
+NULL_encode_oer(const asn_TYPE_descriptor_t *td,
+ const asn_oer_constraints_t *constraints, const void *sptr,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t er;
+
+ (void)td;
+ (void)sptr;
+ (void)constraints;
+ (void)cb;
+ (void)app_key;
+
+ er.encoded = 0; /* Encoding in 0 bytes. */
+
+ ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+ (void)pd;
+
+ if(!*sptr) {
+ *sptr = MALLOC(sizeof(NULL_t));
+ if(*sptr) {
+ *(NULL_t *)*sptr = 0;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ /*
+ * NULL type does not have content octets.
+ */
+
+ rv.code = RC_OK;
+ rv.consumed = 0;
+ return rv;
+}
+
+asn_enc_rval_t
+NULL_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ asn_enc_rval_t er;
+
+ (void)td;
+ (void)constraints;
+ (void)sptr;
+ (void)po;
+
+ er.encoded = 0;
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+
+ (void)opt_codec_ctx;
+ (void)td;
+ (void)constraints;
+ (void)pd;
+
+ if(!*sptr) {
+ *sptr = MALLOC(sizeof(NULL_t));
+ if(*sptr) {
+ *(NULL_t *)*sptr = 0;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+
+ /*
+ * NULL type does not have content octets.
+ */
+
+ rv.code = RC_OK;
+ rv.consumed = 0;
+ return rv;
+}
+
+
+asn_enc_rval_t
+NULL_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ asn_enc_rval_t er;
+
+ (void)td;
+ (void)constraints;
+ (void)sptr;
+ (void)po;
+
+ er.encoded = 0;
+ ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+asn_random_fill_result_t
+NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constr,
+ size_t max_length) {
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ NULL_t *st = *sptr;
+
+ (void)td;
+ (void)constr;
+
+ if(max_length == 0) return result_skipped;
+
+ if(st == NULL) {
+ st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st)));
+ if(st == NULL) {
+ return result_failed;
+ }
+ }
+
+ return result_ok;
+}
+
diff --git a/src/asn/asn1c/NULL.h b/src/asn/asn1c/NULL.h
new file mode 100644
index 0000000..802d12c
--- /dev/null
+++ b/src/asn/asn1c/NULL.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_TYPE_NULL_H
+#define ASN_TYPE_NULL_H
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The value of the NULL type is meaningless: see BOOLEAN if you want to
+ * carry true/false semantics.
+ */
+typedef int NULL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NULL;
+extern asn_TYPE_operation_t asn_OP_NULL;
+
+asn_struct_print_f NULL_print;
+asn_struct_compare_f NULL_compare;
+der_type_encoder_f NULL_encode_der;
+xer_type_decoder_f NULL_decode_xer;
+xer_type_encoder_f NULL_encode_xer;
+oer_type_decoder_f NULL_decode_oer;
+oer_type_encoder_f NULL_encode_oer;
+per_type_decoder_f NULL_decode_uper;
+per_type_encoder_f NULL_encode_uper;
+per_type_decoder_f NULL_decode_aper;
+per_type_encoder_f NULL_encode_aper;
+asn_random_fill_f NULL_random_fill;
+
+#define NULL_free BOOLEAN_free
+#define NULL_decode_ber BOOLEAN_decode_ber
+#define NULL_constraint asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NULL_H */
diff --git a/src/asn/asn1c/NativeEnumerated.c b/src/asn/asn1c/NativeEnumerated.c
new file mode 100644
index 0000000..7c069e7
--- /dev/null
+++ b/src/asn/asn1c/NativeEnumerated.c
@@ -0,0 +1,367 @@
+/*-
+ * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Read the NativeInteger.h for the explanation wrt. differences between
+ * INTEGER and NativeInteger.
+ * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this
+ * implementation deals with the standard (machine-specific) representation
+ * of them instead of using the platform-independent buffer.
+ */
+#include
+#include
+
+/*
+ * NativeEnumerated basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_operation_t asn_OP_NativeEnumerated = {
+ NativeInteger_free,
+ NativeInteger_print,
+ NativeInteger_compare,
+ NativeInteger_decode_ber,
+ NativeInteger_encode_der,
+ NativeInteger_decode_xer,
+ NativeEnumerated_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ NativeEnumerated_decode_oer,
+ NativeEnumerated_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ NativeEnumerated_decode_uper,
+ NativeEnumerated_encode_uper,
+ NativeEnumerated_decode_aper,
+ NativeEnumerated_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ NativeEnumerated_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = {
+ "ENUMERATED", /* The ASN.1 type is still ENUMERATED */
+ "ENUMERATED",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_NativeEnumerated_tags,
+ sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]),
+ asn_DEF_NativeEnumerated_tags, /* Same as above */
+ sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+asn_enc_rval_t
+NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ const long *native = (const long *)sptr;
+ const asn_INTEGER_enum_map_t *el;
+
+ (void)ilevel;
+ (void)flags;
+
+ if(!native) ASN__ENCODE_FAILED;
+
+ el = INTEGER_map_value2enum(specs, *native);
+ if(el) {
+ er.encoded =
+ asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name);
+ if(er.encoded < 0) ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ } else {
+ ASN_DEBUG(
+ "ASN.1 forbids dealing with "
+ "unknown value of ENUMERATED type");
+ ASN__ENCODE_FAILED;
+ }
+}
+
+asn_dec_rval_t
+NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ void **sptr, asn_per_data_t *pd) {
+ const asn_INTEGER_specifics_t *specs = td->specifics;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ long *native = (long *)*sptr;
+ const asn_per_constraint_t *ct;
+ long value;
+
+ (void)opt_codec_ctx;
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ASN__DECODE_FAILED; /* Mandatory! */
+ if(!specs) ASN__DECODE_FAILED;
+
+ if(!native) {
+ native = (long *)(*sptr = CALLOC(1, sizeof(*native)));
+ if(!native) ASN__DECODE_FAILED;
+ }
+
+ ASN_DEBUG("Decoding %s as NativeEnumerated", td->name);
+
+ if(ct->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) ASN__DECODE_STARVED;
+ if(inext) ct = 0;
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ value = per_get_few_bits(pd, ct->range_bits);
+ if(value < 0) ASN__DECODE_STARVED;
+ if(value >= (specs->extension
+ ? specs->extension - 1 : specs->map_count))
+ ASN__DECODE_FAILED;
+ } else {
+ if(!specs->extension)
+ ASN__DECODE_FAILED;
+ /*
+ * X.691, #10.6: normally small non-negative whole number;
+ */
+ value = uper_get_nsnnwn(pd);
+ if(value < 0) ASN__DECODE_STARVED;
+ value += specs->extension - 1;
+ if(value >= specs->map_count)
+ ASN__DECODE_FAILED;
+ }
+
+ *native = specs->value2enum[value].nat_value;
+ ASN_DEBUG("Decoded %s = %ld", td->name, *native);
+
+ return rval;
+}
+
+static int
+NativeEnumerated__compar_value2enum(const void *ap, const void *bp) {
+ const asn_INTEGER_enum_map_t *a = ap;
+ const asn_INTEGER_enum_map_t *b = bp;
+ if(a->nat_value == b->nat_value)
+ return 0;
+ if(a->nat_value < b->nat_value)
+ return -1;
+ return 1;
+}
+
+asn_enc_rval_t
+NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ long native, value;
+ const asn_per_constraint_t *ct;
+ int inext = 0;
+ asn_INTEGER_enum_map_t key;
+ const asn_INTEGER_enum_map_t *kf;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+ if(!specs) ASN__ENCODE_FAILED;
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ASN__ENCODE_FAILED; /* Mandatory! */
+
+ ASN_DEBUG("Encoding %s as NativeEnumerated", td->name);
+
+ er.encoded = 0;
+
+ native = *(const long *)sptr;
+
+ key.nat_value = native;
+ kf = bsearch(&key, specs->value2enum, specs->map_count,
+ sizeof(key), NativeEnumerated__compar_value2enum);
+ if(!kf) {
+ ASN_DEBUG("No element corresponds to %ld", native);
+ ASN__ENCODE_FAILED;
+ }
+ value = kf - specs->value2enum;
+
+ if(ct->range_bits >= 0) {
+ int cmpWith = specs->extension
+ ? specs->extension - 1 : specs->map_count;
+ if(value >= cmpWith)
+ inext = 1;
+ }
+ if(ct->flags & APC_EXTENSIBLE) {
+ if(per_put_few_bits(po, inext, 1))
+ ASN__ENCODE_FAILED;
+ if(inext) ct = 0;
+ } else if(inext) {
+ ASN__ENCODE_FAILED;
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ if(per_put_few_bits(po, value, ct->range_bits))
+ ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ }
+
+ if(!specs->extension)
+ ASN__ENCODE_FAILED;
+
+ /*
+ * X.691, #10.6: normally small non-negative whole number;
+ */
+ ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld",
+ value, specs->extension, inext,
+ value - (inext ? (specs->extension - 1) : 0));
+ if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0)))
+ ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ void **sptr, asn_per_data_t *pd) {
+ const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ long *native = (long *)*sptr;
+ const asn_per_constraint_t *ct;
+ long value;
+
+ (void)opt_codec_ctx;
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ASN__DECODE_FAILED; /* Mandatory! */
+ if(!specs) ASN__DECODE_FAILED;
+
+ if(!native) {
+ native = (long *)(*sptr = CALLOC(1, sizeof(*native)));
+ if(!native) ASN__DECODE_FAILED;
+ }
+
+ ASN_DEBUG("Decoding %s as NativeEnumerated", td->name);
+
+ if(ct->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) ASN__DECODE_STARVED;
+ if(inext) ct = 0;
+ }
+
+ /* Deal with APER padding */
+ if(ct && ct->upper_bound >= 255) {
+ int padding = 0;
+ padding = (8 - (pd->moved % 8)) % 8;
+ ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding);
+ ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound);
+ if(padding > 0)
+ per_get_few_bits(pd, padding);
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ value = per_get_few_bits(pd, ct->range_bits);
+ if(value < 0) ASN__DECODE_STARVED;
+ if(value >= (specs->extension
+ ? specs->extension - 1 : specs->map_count))
+ ASN__DECODE_FAILED;
+ } else {
+ if(!specs->extension)
+ ASN__DECODE_FAILED;
+ /*
+ * X.691, #10.6: normally small non-negative whole number;
+ */
+ value = uper_get_nsnnwn(pd);
+ if(value < 0) ASN__DECODE_STARVED;
+ value += specs->extension - 1;
+ if(value >= specs->map_count)
+ ASN__DECODE_FAILED;
+ }
+
+ *native = specs->value2enum[value].nat_value;
+ ASN_DEBUG("Decoded %s = %ld", td->name, *native);
+
+ return rval;
+}
+
+asn_enc_rval_t
+NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ long native, value;
+ const asn_per_constraint_t *ct;
+ int inext = 0;
+ asn_INTEGER_enum_map_t key;
+ asn_INTEGER_enum_map_t *kf;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+ if(!specs) ASN__ENCODE_FAILED;
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ASN__ENCODE_FAILED; /* Mandatory! */
+
+ ASN_DEBUG("Encoding %s as NativeEnumerated", td->name);
+
+ er.encoded = 0;
+
+ native = *(const long *)sptr;
+ if(native < 0) ASN__ENCODE_FAILED;
+
+ key.nat_value = native;
+ kf = bsearch(&key, specs->value2enum, specs->map_count,
+ sizeof(key), NativeEnumerated__compar_value2enum);
+ if(!kf) {
+ ASN_DEBUG("No element corresponds to %ld", native);
+ ASN__ENCODE_FAILED;
+ }
+ value = kf - specs->value2enum;
+
+ if(ct->range_bits >= 0) {
+ int cmpWith = specs->extension
+ ? specs->extension - 1 : specs->map_count;
+ if(value >= cmpWith)
+ inext = 1;
+ }
+ if(ct->flags & APC_EXTENSIBLE) {
+ if(per_put_few_bits(po, inext, 1))
+ ASN__ENCODE_FAILED;
+ if(inext) ct = 0;
+ } else if(inext) {
+ ASN__ENCODE_FAILED;
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ if(per_put_few_bits(po, value, ct->range_bits))
+ ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ }
+
+ if(!specs->extension)
+ ASN__ENCODE_FAILED;
+
+ /*
+ * X.691, #10.6: normally small non-negative whole number;
+ */
+ ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld",
+ value, specs->extension, inext,
+ value - (inext ? (specs->extension - 1) : 0));
+ if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0)))
+ ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
diff --git a/src/asn/asn1c/NativeEnumerated.h b/src/asn/asn1c/NativeEnumerated.h
new file mode 100644
index 0000000..459f0e6
--- /dev/null
+++ b/src/asn/asn1c/NativeEnumerated.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2004-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard ENUMERATED in that it is modelled using
+ * the fixed machine type (long, int, short), so it can hold only values of
+ * limited length. There is no type (i.e., NativeEnumerated_t, any integer type
+ * will do).
+ * This type may be used when integer range is limited by subtype constraints.
+ */
+#ifndef _NativeEnumerated_H_
+#define _NativeEnumerated_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated;
+extern asn_TYPE_operation_t asn_OP_NativeEnumerated;
+
+xer_type_encoder_f NativeEnumerated_encode_xer;
+oer_type_decoder_f NativeEnumerated_decode_oer;
+oer_type_encoder_f NativeEnumerated_encode_oer;
+per_type_decoder_f NativeEnumerated_decode_uper;
+per_type_encoder_f NativeEnumerated_encode_uper;
+per_type_decoder_f NativeEnumerated_decode_aper;
+per_type_encoder_f NativeEnumerated_encode_aper;
+
+#define NativeEnumerated_free NativeInteger_free
+#define NativeEnumerated_print NativeInteger_print
+#define NativeEnumerated_compare NativeInteger_compare
+#define NativeEnumerated_random_fill NativeInteger_random_fill
+#define NativeEnumerated_constraint asn_generic_no_constraint
+#define NativeEnumerated_decode_ber NativeInteger_decode_ber
+#define NativeEnumerated_encode_der NativeInteger_encode_der
+#define NativeEnumerated_decode_xer NativeInteger_decode_xer
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NativeEnumerated_H_ */
diff --git a/src/asn/asn1c/NativeInteger.c b/src/asn/asn1c/NativeInteger.c
new file mode 100644
index 0000000..8c00d54
--- /dev/null
+++ b/src/asn/asn1c/NativeInteger.c
@@ -0,0 +1,550 @@
+/*-
+ * Copyright (c) 2004, 2005, 2006 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Read the NativeInteger.h for the explanation wrt. differences between
+ * INTEGER and NativeInteger.
+ * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this
+ * implementation deals with the standard (machine-specific) representation
+ * of them instead of using the platform-independent buffer.
+ */
+#include
+#include
+
+/*
+ * NativeInteger basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_operation_t asn_OP_NativeInteger = {
+ NativeInteger_free,
+ NativeInteger_print,
+ NativeInteger_compare,
+ NativeInteger_decode_ber,
+ NativeInteger_encode_der,
+ NativeInteger_decode_xer,
+ NativeInteger_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ NativeInteger_decode_oer, /* OER decoder */
+ NativeInteger_encode_oer, /* Canonical OER encoder */
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ NativeInteger_decode_uper, /* Unaligned PER decoder */
+ NativeInteger_encode_uper, /* Unaligned PER encoder */
+ NativeInteger_decode_aper, /* Aligned PER decoder */
+ NativeInteger_encode_aper, /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ NativeInteger_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NativeInteger = {
+ "INTEGER", /* The ASN.1 type is still INTEGER */
+ "INTEGER",
+ &asn_OP_NativeInteger,
+ asn_DEF_NativeInteger_tags,
+ sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]),
+ asn_DEF_NativeInteger_tags, /* Same as above */
+ sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+/*
+ * Decode INTEGER type.
+ */
+asn_dec_rval_t
+NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **nint_ptr,
+ const void *buf_ptr, size_t size, int tag_mode) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ long *native = (long *)*nint_ptr;
+ asn_dec_rval_t rval;
+ ber_tlv_len_t length;
+
+ /*
+ * If the structure is not there, allocate it.
+ */
+ if(native == NULL) {
+ native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native)));
+ if(native == NULL) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ return rval;
+ }
+ }
+
+ ASN_DEBUG("Decoding %s as INTEGER (tm=%d)",
+ td->name, tag_mode);
+
+ /*
+ * Check tags.
+ */
+ rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size,
+ tag_mode, 0, &length, 0);
+ if(rval.code != RC_OK)
+ return rval;
+
+ ASN_DEBUG("%s length is %d bytes", td->name, (int)length);
+
+ /*
+ * Make sure we have this length.
+ */
+ buf_ptr = ((const char *)buf_ptr) + rval.consumed;
+ size -= rval.consumed;
+ if(length > (ber_tlv_len_t)size) {
+ rval.code = RC_WMORE;
+ rval.consumed = 0;
+ return rval;
+ }
+
+ /*
+ * ASN.1 encoded INTEGER: buf_ptr, length
+ * Fill the native, at the same time checking for overflow.
+ * If overflow occured, return with RC_FAIL.
+ */
+ {
+ INTEGER_t tmp;
+ union {
+ const void *constbuf;
+ void *nonconstbuf;
+ } unconst_buf;
+ long l;
+
+ unconst_buf.constbuf = buf_ptr;
+ tmp.buf = (uint8_t *)unconst_buf.nonconstbuf;
+ tmp.size = length;
+
+ if((specs&&specs->field_unsigned)
+ ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */
+ : asn_INTEGER2long(&tmp, &l)) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ return rval;
+ }
+
+ *native = l;
+ }
+
+ rval.code = RC_OK;
+ rval.consumed += length;
+
+ ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)",
+ (long)rval.consumed, (long)length, td->name, (long)*native);
+
+ return rval;
+}
+
+/*
+ * Encode the NativeInteger using the standard INTEGER type DER encoder.
+ */
+asn_enc_rval_t
+NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr,
+ int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */
+ asn_enc_rval_t erval;
+ INTEGER_t tmp;
+
+#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */
+
+ tmp.buf = (uint8_t *)&native;
+ tmp.size = sizeof(native);
+
+#else /* Works even if WORDS_BIGENDIAN is not set where should've been */
+ uint8_t buf[sizeof(native)];
+ uint8_t *p;
+
+ /* Prepare a fake INTEGER */
+ for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8)
+ *p = (uint8_t)native;
+
+ tmp.buf = buf;
+ tmp.size = sizeof(buf);
+#endif /* WORDS_BIGENDIAN */
+
+ /* Encode fake INTEGER */
+ erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key);
+ if(erval.structure_ptr == &tmp) {
+ erval.structure_ptr = ptr;
+ }
+ return erval;
+}
+
+/*
+ * Decode the chunk of XML text encoding INTEGER.
+ */
+asn_dec_rval_t
+NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr,
+ size_t size) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_dec_rval_t rval;
+ INTEGER_t st;
+ void *st_ptr = (void *)&st;
+ long *native = (long *)*sptr;
+
+ if(!native) {
+ native = (long *)(*sptr = CALLOC(1, sizeof(*native)));
+ if(!native) ASN__DECODE_FAILED;
+ }
+
+ memset(&st, 0, sizeof(st));
+ rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr,
+ opt_mname, buf_ptr, size);
+ if(rval.code == RC_OK) {
+ long l;
+ if((specs&&specs->field_unsigned)
+ ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */
+ : asn_INTEGER2long(&st, &l)) {
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ } else {
+ *native = l;
+ }
+ } else {
+ /*
+ * Cannot restart from the middle;
+ * there is no place to save state in the native type.
+ * Request a continuation from the very beginning.
+ */
+ rval.consumed = 0;
+ }
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st);
+ return rval;
+}
+
+
+asn_enc_rval_t
+NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ char scratch[32]; /* Enough for 64-bit int */
+ asn_enc_rval_t er;
+ const long *native = (const long *)sptr;
+
+ (void)ilevel;
+ (void)flags;
+
+ if(!native) ASN__ENCODE_FAILED;
+
+ er.encoded = snprintf(scratch, sizeof(scratch),
+ (specs && specs->field_unsigned)
+ ? "%lu" : "%ld", *native);
+ if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch)
+ || cb(scratch, er.encoded, app_key) < 0)
+ ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_dec_rval_t rval;
+ long *native = (long *)*sptr;
+ INTEGER_t tmpint;
+ void *tmpintptr = &tmpint;
+
+ (void)opt_codec_ctx;
+ ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name);
+
+ if(!native) {
+ native = (long *)(*sptr = CALLOC(1, sizeof(*native)));
+ if(!native) ASN__DECODE_FAILED;
+ }
+
+ memset(&tmpint, 0, sizeof tmpint);
+ rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints,
+ &tmpintptr, pd);
+ if(rval.code == RC_OK) {
+ if((specs&&specs->field_unsigned)
+ ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native)
+ : asn_INTEGER2long(&tmpint, native))
+ rval.code = RC_FAIL;
+ else
+ ASN_DEBUG("NativeInteger %s got value %ld",
+ td->name, *native);
+ }
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint);
+
+ return rval;
+}
+
+asn_enc_rval_t
+NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ long native;
+ INTEGER_t tmpint;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ native = *(const long *)sptr;
+
+ ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native);
+
+ memset(&tmpint, 0, sizeof(tmpint));
+ if((specs&&specs->field_unsigned)
+ ? asn_ulong2INTEGER(&tmpint, native)
+ : asn_long2INTEGER(&tmpint, native))
+ ASN__ENCODE_FAILED;
+ er = INTEGER_encode_uper(td, constraints, &tmpint, po);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint);
+ return er;
+}
+
+asn_dec_rval_t
+NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+
+ const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_dec_rval_t rval;
+ long *native = (long *)*sptr;
+ INTEGER_t tmpint;
+ void *tmpintptr = &tmpint;
+
+ (void)opt_codec_ctx;
+ ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name);
+
+ if(!native) {
+ native = (long *)(*sptr = CALLOC(1, sizeof(*native)));
+ if(!native) ASN__DECODE_FAILED;
+ }
+
+ memset(&tmpint, 0, sizeof tmpint);
+ rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints,
+ &tmpintptr, pd);
+ if(rval.code == RC_OK) {
+ if((specs&&specs->field_unsigned)
+ ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native)
+ : asn_INTEGER2long(&tmpint, native))
+ rval.code = RC_FAIL;
+ else
+ ASN_DEBUG("NativeInteger %s got value %ld",
+ td->name, *native);
+ }
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint);
+
+ return rval;
+}
+
+asn_enc_rval_t
+NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+
+ const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ long native;
+ INTEGER_t tmpint;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ native = *(const long *)sptr;
+
+ ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native);
+
+ memset(&tmpint, 0, sizeof(tmpint));
+ if((specs&&specs->field_unsigned)
+ ? asn_ulong2INTEGER(&tmpint, (unsigned long)native)
+ : asn_long2INTEGER(&tmpint, native))
+ ASN__ENCODE_FAILED;
+ er = INTEGER_encode_aper(td, constraints, &tmpint, po);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint);
+ return er;
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+/*
+ * INTEGER specific human-readable output.
+ */
+int
+NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ const long *native = (const long *)sptr;
+ char scratch[32]; /* Enough for 64-bit int */
+ int ret;
+
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(native) {
+ long value = *native;
+ ret = snprintf(scratch, sizeof(scratch),
+ (specs && specs->field_unsigned) ? "%lu" : "%ld", value);
+ assert(ret > 0 && (size_t)ret < sizeof(scratch));
+ if(cb(scratch, ret, app_key) < 0) return -1;
+ if(specs && (value >= 0 || !specs->field_unsigned)) {
+ const asn_INTEGER_enum_map_t *el =
+ INTEGER_map_value2enum(specs, value);
+ if(el) {
+ if(cb(" (", 2, app_key) < 0) return -1;
+ if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1;
+ if(cb(")", 1, app_key) < 0) return -1;
+ }
+ }
+ return 0;
+ } else {
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+void
+NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr,
+ enum asn_struct_free_method method) {
+ if(!td || !ptr)
+ return;
+
+ ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)",
+ td->name, method, ptr);
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(ptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(ptr, 0, sizeof(long));
+ break;
+ }
+}
+
+int
+NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) {
+ (void)td;
+
+ if(aptr && bptr) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ if(specs && specs->field_unsigned) {
+ const unsigned long *a = aptr;
+ const unsigned long *b = bptr;
+ if(*a < *b) {
+ return -1;
+ } else if(*a > *b) {
+ return 1;
+ } else {
+ return 0;
+ }
+ } else {
+ const long *a = aptr;
+ const long *b = bptr;
+ if(*a < *b) {
+ return -1;
+ } else if(*a > *b) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ } else if(!aptr) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+asn_random_fill_result_t
+NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constraints,
+ size_t max_length) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ long *st = *sptr;
+ const asn_INTEGER_enum_map_t *emap;
+ size_t emap_len;
+ intmax_t value;
+ int find_inside_map;
+
+ if(max_length == 0) return result_skipped;
+
+ if(st == NULL) {
+ st = (long *)CALLOC(1, sizeof(*st));
+ if(st == NULL) {
+ return result_failed;
+ }
+ }
+
+ if(specs) {
+ emap = specs->value2enum;
+ emap_len = specs->map_count;
+ if(specs->strict_enumeration) {
+ find_inside_map = emap_len > 0;
+ } else {
+ find_inside_map = emap_len ? asn_random_between(0, 1) : 0;
+ }
+ } else {
+ emap = 0;
+ emap_len = 0;
+ find_inside_map = 0;
+ }
+
+ if(find_inside_map) {
+ assert(emap_len > 0);
+ value = emap[asn_random_between(0, emap_len - 1)].nat_value;
+ } else {
+ const asn_per_constraints_t *ct;
+
+ static const long variants[] = {
+ -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384,
+ -16383, -257, -256, -255, -254, -129, -128, -127,
+ -126, -1, 0, 1, 126, 127, 128, 129,
+ 254, 255, 256, 257, 16383, 16384, 16385, 32767,
+ 32768, 32769, 65534, 65535, 65536, 65537};
+ if(specs && specs->field_unsigned) {
+ assert(variants[18] == 0);
+ value = variants[asn_random_between(
+ 18, sizeof(variants) / sizeof(variants[0]) - 1)];
+ } else {
+ value = variants[asn_random_between(
+ 0, sizeof(variants) / sizeof(variants[0]) - 1)];
+ }
+
+ if(!constraints) constraints = &td->encoding_constraints;
+ ct = constraints ? constraints->per_constraints : 0;
+ if(ct && (ct->value.flags & APC_CONSTRAINED)) {
+ if(value < ct->value.lower_bound || value > ct->value.upper_bound) {
+ value = asn_random_between(ct->value.lower_bound,
+ ct->value.upper_bound);
+ }
+ }
+ }
+
+ *sptr = st;
+ *st = value;
+ return result_ok;
+}
diff --git a/src/asn/asn1c/NativeInteger.h b/src/asn/asn1c/NativeInteger.h
new file mode 100644
index 0000000..c74406a
--- /dev/null
+++ b/src/asn/asn1c/NativeInteger.h
@@ -0,0 +1,46 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard INTEGER in that it is modelled using
+ * the fixed machine type (long, int, short), so it can hold only values of
+ * limited length. There is no type (i.e., NativeInteger_t, any integer type
+ * will do).
+ * This type may be used when integer range is limited by subtype constraints.
+ */
+#ifndef _NativeInteger_H_
+#define _NativeInteger_H_
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeInteger;
+extern asn_TYPE_operation_t asn_OP_NativeInteger;
+
+asn_struct_free_f NativeInteger_free;
+asn_struct_print_f NativeInteger_print;
+asn_struct_compare_f NativeInteger_compare;
+ber_type_decoder_f NativeInteger_decode_ber;
+der_type_encoder_f NativeInteger_encode_der;
+xer_type_decoder_f NativeInteger_decode_xer;
+xer_type_encoder_f NativeInteger_encode_xer;
+oer_type_decoder_f NativeInteger_decode_oer;
+oer_type_encoder_f NativeInteger_encode_oer;
+per_type_decoder_f NativeInteger_decode_uper;
+per_type_encoder_f NativeInteger_encode_uper;
+per_type_decoder_f NativeInteger_decode_aper;
+per_type_encoder_f NativeInteger_encode_aper;
+asn_random_fill_f NativeInteger_random_fill;
+
+#define NativeInteger_constraint asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NativeInteger_H_ */
diff --git a/src/asn/asn1c/OBJECT_IDENTIFIER.c b/src/asn/asn1c/OBJECT_IDENTIFIER.c
new file mode 100644
index 0000000..80ab797
--- /dev/null
+++ b/src/asn/asn1c/OBJECT_IDENTIFIER.c
@@ -0,0 +1,647 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+#include
+#include /* for CHAR_BIT */
+#include
+
+/*
+ * OBJECT IDENTIFIER basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (6 << 2))
+};
+asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = {
+ ASN__PRIMITIVE_TYPE_free,
+ OBJECT_IDENTIFIER_print,
+ OCTET_STRING_compare, /* Implemented in terms of a string comparison */
+ ber_decode_primitive,
+ der_encode_primitive,
+ OBJECT_IDENTIFIER_decode_xer,
+ OBJECT_IDENTIFIER_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ OBJECT_IDENTIFIER_decode_oer,
+ OBJECT_IDENTIFIER_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ OCTET_STRING_decode_uper,
+ OCTET_STRING_encode_uper,
+ OCTET_STRING_decode_aper,
+ OCTET_STRING_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ OBJECT_IDENTIFIER_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = {
+ "OBJECT IDENTIFIER",
+ "OBJECT_IDENTIFIER",
+ &asn_OP_OBJECT_IDENTIFIER,
+ asn_DEF_OBJECT_IDENTIFIER_tags,
+ sizeof(asn_DEF_OBJECT_IDENTIFIER_tags)
+ / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]),
+ asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */
+ sizeof(asn_DEF_OBJECT_IDENTIFIER_tags)
+ / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]),
+ { 0, 0, OBJECT_IDENTIFIER_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+int
+OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb,
+ void *app_key) {
+ const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr;
+
+ if(st && st->buf) {
+ if(st->size < 1) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: at least one numerical value "
+ "expected (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+ } else {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ return 0;
+}
+
+static ssize_t
+OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len,
+ asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) {
+ asn_oid_arc_t value;
+
+ ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value);
+ if(rd <= 0) return rd;
+
+ if(value >= 80) {
+ *arc0 = 2;
+ *arc1 = value - 80;
+ } else if(value >= 40) {
+ *arc0 = 1;
+ *arc1 = value - 40;
+ } else {
+ *arc0 = 0;
+ *arc1 = value;
+ }
+
+ return rd;
+}
+
+ssize_t
+OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len,
+ asn_oid_arc_t *ret_value) {
+ const uint8_t *b = arcbuf;
+ const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */
+
+ if(arcbuf == arcend) {
+ return 0;
+ } else {
+ asn_oid_arc_t accum;
+ /* Gather all bits into the accumulator */
+ for(accum = 0; b < arcend; b++) {
+ accum = (accum << 7) | (*b & ~0x80);
+ if((*b & 0x80) == 0) {
+ if(accum <= ASN_OID_ARC_MAX) {
+ *ret_value = accum;
+ return 1 + (b - arcbuf);
+ } else {
+ errno = ERANGE; /* Overflow */
+ return -1;
+ }
+ }
+ }
+ errno = EINVAL;
+ return -1;
+ }
+
+}
+
+static ssize_t
+OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ char scratch[32];
+ asn_oid_arc_t arc0, arc1;
+ size_t produced = 0;
+ size_t off = 0;
+ ssize_t rd;
+ int ret;
+
+ rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1);
+ if(rd <= 0) {
+ return -1;
+ }
+
+ ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1);
+ if(ret >= (ssize_t)sizeof(scratch)) {
+ return -1;
+ }
+ produced += ret;
+ if(cb(scratch, ret, app_key) < 0)
+ return -1;
+
+ for(off = rd; ; ) {
+ asn_oid_arc_t arc;
+ rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off,
+ &arc);
+ if(rd < 0) {
+ return -1;
+ } else if(rd == 0) {
+ /* No more arcs. */
+ break;
+ } else {
+ off += rd;
+ assert(off <= st->size);
+ ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc);
+ if(ret >= (ssize_t)sizeof(scratch)) {
+ return -1;
+ }
+ produced += ret;
+ if(cb(scratch, ret, app_key) < 0) return -1;
+ }
+ }
+
+ if(off != st->size) {
+ ASN_DEBUG("Could not scan to the end of Object Identifier");
+ return -1;
+ }
+
+ return produced;
+}
+
+static enum xer_pbd_rval
+OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+ const void *chunk_buf, size_t chunk_size) {
+ OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr;
+ const char *chunk_end = (const char *)chunk_buf + chunk_size;
+ const char *endptr;
+ asn_oid_arc_t s_arcs[10];
+ asn_oid_arc_t *arcs = s_arcs;
+ ssize_t num_arcs;
+ ssize_t ret;
+
+ (void)td;
+
+ num_arcs = OBJECT_IDENTIFIER_parse_arcs(
+ (const char *)chunk_buf, chunk_size, arcs,
+ sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr);
+ if(num_arcs < 0) {
+ /* Expecting more than zero arcs */
+ return XPBD_BROKEN_ENCODING;
+ } else if(num_arcs == 0) {
+ return XPBD_NOT_BODY_IGNORE;
+ }
+ assert(endptr == chunk_end);
+
+ if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) {
+ arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t));
+ if(!arcs) return XPBD_SYSTEM_FAILURE;
+ ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size,
+ arcs, num_arcs, &endptr);
+ if(ret != num_arcs)
+ return XPBD_SYSTEM_FAILURE; /* assert?.. */
+ }
+
+ /*
+ * Convert arcs into BER representation.
+ */
+ ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs);
+ if(arcs != s_arcs) FREEMEM(arcs);
+
+ return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED;
+}
+
+asn_dec_rval_t
+OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr,
+ size_t size) {
+ return xer_decode_primitive(opt_codec_ctx, td,
+ sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname,
+ buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode);
+}
+
+asn_enc_rval_t
+OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr;
+ asn_enc_rval_t er;
+
+ (void)ilevel;
+ (void)flags;
+
+ if(!st || !st->buf) {
+ ASN__ENCODE_FAILED;
+ }
+
+ er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key);
+ if(er.encoded < 0) ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+int
+OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr;
+
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(!st || !st->buf)
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+
+ /* Dump preamble */
+ if(cb("{ ", 2, app_key) < 0)
+ return -1;
+
+ if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) {
+ return -1;
+ }
+
+ return (cb(" }", 2, app_key) < 0) ? -1 : 0;
+}
+
+ssize_t
+OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs,
+ size_t arc_slots) {
+ asn_oid_arc_t arc0, arc1;
+ size_t num_arcs = 0;
+ size_t off;
+ ssize_t rd;
+
+ if(!st || !st->buf) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1);
+ if(rd <= 0) {
+ return -1;
+ }
+ num_arcs = 2;
+ switch(arc_slots) {
+ default:
+ case 2:
+ arcs[1] = arc1;
+ /* Fall through */
+ case 1:
+ arcs[0] = arc0;
+ /* Fall through */
+ case 0:
+ break;
+ }
+
+ for(off = rd; ; ) {
+ asn_oid_arc_t arc;
+ rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off,
+ &arc);
+ if(rd < 0) {
+ return -1;
+ } else if(rd == 0) {
+ /* No more arcs. */
+ break;
+ } else {
+ off += rd;
+ if(num_arcs < arc_slots) {
+ arcs[num_arcs] = arc;
+ }
+ num_arcs++;
+ }
+ }
+
+ if(off != st->size) {
+ return -1;
+ }
+
+ return num_arcs;
+}
+
+
+/*
+ * Save the single value as an object identifier arc.
+ */
+ssize_t
+OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len,
+ asn_oid_arc_t value) {
+ /*
+ * The following conditions must hold:
+ * assert(arcbuf);
+ */
+ uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)];
+ uint8_t *scratch_end = &scratch[sizeof(scratch)-1];
+ uint8_t *b;
+ size_t result_len;
+ uint8_t mask;
+
+ for(b = scratch_end, mask = 0; ; mask = 0x80, b--) {
+ *b = mask | (value & 0x7f);
+ value >>= 7;
+ if(!value) {
+ break;
+ }
+ }
+
+ result_len = (scratch_end - b) + 1;
+
+ if(result_len > arcbuf_len) {
+ return -1;
+ }
+
+ memcpy(arcbuf, b, result_len);
+
+ return result_len;
+}
+
+int
+OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs,
+ size_t arc_slots) {
+ uint8_t *buf;
+ uint8_t *bp;
+ ssize_t wrote;
+ asn_oid_arc_t arc0;
+ asn_oid_arc_t arc1;
+ size_t size;
+ size_t i;
+
+ if(!st || !arcs || arc_slots < 2) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ arc0 = arcs[0];
+ arc1 = arcs[1];
+
+ if(arc0 <= 1) {
+ if(arc1 >= 40) {
+ /* 8.19.4: At most 39 subsequent values (including 0) */
+ errno = ERANGE;
+ return -1;
+ }
+ } else if(arc0 == 2) {
+ if(arc1 > ASN_OID_ARC_MAX - 80) {
+ errno = ERANGE;
+ return -1;
+ }
+ } else if(arc0 > 2) {
+ /* 8.19.4: Only three values are allocated from the root node */
+ errno = ERANGE;
+ return -1;
+ }
+
+ /*
+ * After above tests it is known that the value of arc0 is completely
+ * trustworthy (0..2). However, the arc1's value is still meaningless.
+ */
+
+ /*
+ * Roughly estimate the maximum size necessary to encode these arcs.
+ * This estimation implicitly takes in account the following facts,
+ * that cancel each other:
+ * * the first two arcs are encoded in a single value.
+ * * the first value may require more space (+1 byte)
+ * * the value of the first arc which is in range (0..2)
+ */
+ size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots;
+ bp = buf = (uint8_t *)MALLOC(size + 1);
+ if(!buf) {
+ /* ENOMEM */
+ return -1;
+ }
+
+ wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1);
+ if(wrote <= 0) {
+ FREEMEM(buf);
+ return -1;
+ }
+ assert((size_t)wrote <= size);
+ bp += wrote;
+ size -= wrote;
+
+ for(i = 2; i < arc_slots; i++) {
+ wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]);
+ if(wrote <= 0) {
+ FREEMEM(buf);
+ return -1;
+ }
+ assert((size_t)wrote <= size);
+ bp += wrote;
+ size -= wrote;
+ }
+
+ /*
+ * Replace buffer.
+ */
+ st->size = bp - buf;
+ bp = st->buf;
+ st->buf = buf;
+ st->buf[st->size] = '\0';
+ if(bp) FREEMEM(bp);
+
+ return 0;
+}
+
+ssize_t
+OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length,
+ asn_oid_arc_t *arcs, size_t arcs_count,
+ const char **opt_oid_text_end) {
+ size_t num_arcs = 0;
+ const char *oid_end;
+ enum {
+ ST_LEADSPACE,
+ ST_TAILSPACE,
+ ST_AFTERVALUE, /* Next character ought to be '.' or a space */
+ ST_WAITDIGITS /* Next character is expected to be a digit */
+ } state = ST_LEADSPACE;
+
+ if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) {
+ if(opt_oid_text_end) *opt_oid_text_end = oid_text;
+ errno = EINVAL;
+ return -1;
+ }
+
+ if(oid_txt_length == -1)
+ oid_txt_length = strlen(oid_text);
+
+#define _OID_CAPTURE_ARC(oid_text, oid_end) \
+ do { \
+ const char *endp = oid_end; \
+ unsigned long value; \
+ switch(asn_strtoul_lim(oid_text, &endp, &value)) { \
+ case ASN_STRTOX_EXTRA_DATA: \
+ case ASN_STRTOX_OK: \
+ if(value <= ASN_OID_ARC_MAX) { \
+ if(num_arcs < arcs_count) arcs[num_arcs] = value; \
+ num_arcs++; \
+ oid_text = endp - 1; \
+ break; \
+ } \
+ /* Fall through */ \
+ case ASN_STRTOX_ERROR_RANGE: \
+ if(opt_oid_text_end) *opt_oid_text_end = oid_text; \
+ errno = ERANGE; \
+ return -1; \
+ case ASN_STRTOX_ERROR_INVAL: \
+ case ASN_STRTOX_EXPECT_MORE: \
+ if(opt_oid_text_end) *opt_oid_text_end = oid_text; \
+ errno = EINVAL; \
+ return -1; \
+ } \
+ } while(0)
+
+ for(oid_end = oid_text + oid_txt_length; oid_text broken OID */
+ return -1;
+ case ST_LEADSPACE:
+ case ST_WAITDIGITS:
+ _OID_CAPTURE_ARC(oid_text, oid_end);
+ state = ST_AFTERVALUE;
+ continue;
+ }
+ break;
+ default:
+ /* Unexpected symbols */
+ state = ST_WAITDIGITS;
+ break;
+ } /* switch() */
+ break;
+ } /* for() */
+
+
+ if(opt_oid_text_end) *opt_oid_text_end = oid_text;
+
+ /* Finalize last arc */
+ switch(state) {
+ case ST_LEADSPACE:
+ return 0; /* No OID found in input data */
+ case ST_WAITDIGITS:
+ errno = EINVAL; /* Broken OID */
+ return -1;
+ case ST_AFTERVALUE:
+ case ST_TAILSPACE:
+ return num_arcs;
+ }
+
+ errno = EINVAL; /* Broken OID */
+ return -1;
+}
+
+/*
+ * Generate values from the list of interesting values, or just a random
+ * value up to the upper limit.
+ */
+static asn_oid_arc_t
+OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) {
+ const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256};
+ size_t idx;
+
+ switch(asn_random_between(0, 2)) {
+ case 0:
+ idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1);
+ if(values[idx] < upper_bound) {
+ return values[idx];
+ }
+ /* Fall through */
+ case 1:
+ return asn_random_between(0, upper_bound);
+ case 2:
+ default:
+ return upper_bound;
+ }
+}
+
+asn_random_fill_result_t
+OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constraints,
+ size_t max_length) {
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ OBJECT_IDENTIFIER_t *st;
+ asn_oid_arc_t arcs[5];
+ size_t arcs_len = asn_random_between(2, 5);
+ size_t i;
+
+ (void)constraints;
+
+ if(max_length < arcs_len) return result_skipped;
+
+ if(*sptr) {
+ st = *sptr;
+ } else {
+ st = CALLOC(1, sizeof(*st));
+ }
+
+ arcs[0] = asn_random_between(0, 2);
+ arcs[1] = OBJECT_IDENTIFIER__biased_random_arc(
+ arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80));
+ for(i = 2; i < arcs_len; i++) {
+ arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX);
+ }
+
+ if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) {
+ if(st != *sptr) {
+ ASN_STRUCT_FREE(*td, st);
+ }
+ return result_failed;
+ }
+
+ *sptr = st;
+
+ result_ok.length = st->size;
+ return result_ok;
+}
diff --git a/src/asn/asn1c/OBJECT_IDENTIFIER.h b/src/asn/asn1c/OBJECT_IDENTIFIER.h
new file mode 100644
index 0000000..087c6fd
--- /dev/null
+++ b/src/asn/asn1c/OBJECT_IDENTIFIER.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _OBJECT_IDENTIFIER_H_
+#define _OBJECT_IDENTIFIER_H_
+
+#include
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef uint32_t asn_oid_arc_t;
+#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0))
+
+typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER;
+extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER;
+
+asn_struct_print_f OBJECT_IDENTIFIER_print;
+asn_constr_check_f OBJECT_IDENTIFIER_constraint;
+der_type_encoder_f OBJECT_IDENTIFIER_encode_der;
+xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer;
+xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer;
+asn_random_fill_f OBJECT_IDENTIFIER_random_fill;
+
+#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free
+#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare
+#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive
+#define OBJECT_IDENTIFIER_encode_der der_encode_primitive
+#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive
+#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive
+#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper
+#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper
+#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper
+#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper
+
+/**********************************
+ * Some handy conversion routines *
+ **********************************/
+
+/*
+ * This function fills an (arcs) array with OBJECT IDENTIFIER arcs
+ * up to specified (arc_slots) elements.
+ *
+ * EXAMPLE:
+ * void print_arcs(OBJECT_IDENTIFIER_t *oid) {
+ * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first
+ * asn_oid_arc_t *arcs = fixed_arcs;
+ * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10
+ * ssize_t count; // Real number of arcs.
+ * int i;
+ *
+ * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots);
+ * // If necessary, reallocate arcs array and try again.
+ * if(count > arc_slots) {
+ * arc_slots = count;
+ * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots);
+ * if(!arcs) return;
+ * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots);
+ * assert(count == arc_slots);
+ * }
+ *
+ * // Print the contents of the arcs array.
+ * for(i = 0; i < count; i++)
+ * printf("%"PRIu32"\n", arcs[i]);
+ *
+ * // Avoid memory leak.
+ * if(arcs != fixed_arcs) free(arcs);
+ * }
+ *
+ * RETURN VALUES:
+ * -1/EINVAL: Invalid arguments (oid is missing)
+ * -1/ERANGE: One or more arcs have value out of array cell type range.
+ * >=0: Number of arcs contained in the OBJECT IDENTIFIER
+ *
+ * WARNING: The function always returns the actual number of arcs,
+ * even if there is no sufficient (arc_slots) provided.
+ */
+ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid,
+ asn_oid_arc_t *arcs, size_t arc_slots);
+
+/*
+ * This functions initializes the OBJECT IDENTIFIER object with
+ * the given set of arcs.
+ * The minimum of two arcs must be present; some restrictions apply.
+ * RETURN VALUES:
+ * -1/EINVAL: Invalid arguments
+ * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions.
+ * -1/ENOMEM: Memory allocation failed
+ * 0: The object was initialized with new arcs.
+ */
+int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid,
+ const asn_oid_arc_t *arcs, size_t arcs_count);
+
+
+/*
+ * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363").
+ * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX).
+ * This function is not specific to OBJECT IDENTIFIER, it may be used to parse
+ * the RELATIVE-OID data, or any other data consisting of dot-separated
+ * series of numeric values.
+ *
+ * If (oid_txt_length == -1), the strlen() will be invoked to determine the
+ * size of the (oid_text) string.
+ *
+ * After return, the optional (opt_oid_text_end) is set to the character after
+ * the last parsed one. (opt_oid_text_end) is never less than (oid_text).
+ *
+ * RETURN VALUES:
+ * -1: Parse error.
+ * >= 0: Number of arcs contained in the OBJECT IDENTIFIER.
+ *
+ * WARNING: The function always returns the real number of arcs,
+ * even if there is no sufficient (arc_slots) provided.
+ * This is useful for (arc_slots) value estimation.
+ */
+ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text,
+ ssize_t oid_txt_length,
+ asn_oid_arc_t *arcs, size_t arcs_count,
+ const char **opt_oid_text_end);
+
+/*
+ * Internal functions.
+ * Used by RELATIVE-OID implementation in particular.
+ */
+
+/*
+ * Retrieve a single arc of size from the (arcbuf) buffer.
+ * RETURN VALUES:
+ * -1: Failed to retrieve the value from the (arcbuf).
+ * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len).
+ */
+ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf,
+ size_t arcbuf_len,
+ asn_oid_arc_t *ret_value);
+
+/*
+ * Write the unterminated arc value into the (arcbuf) which has the size at
+ * least (arcbuf_len).
+ * RETURN VALUES:
+ * -1: (arcbuf_len) size is not sufficient to write the value.
+ * : Number of bytes appended to the arcbuf (<= arcbuf_len).
+ */
+ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len,
+ asn_oid_arc_t arc_value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OBJECT_IDENTIFIER_H_ */
diff --git a/src/asn/asn1c/OCTET_STRING.c b/src/asn/asn1c/OCTET_STRING.c
new file mode 100644
index 0000000..5779330
--- /dev/null
+++ b/src/asn/asn1c/OCTET_STRING.c
@@ -0,0 +1,2409 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include /* for .bits_unused member */
+#include
+
+/*
+ * OCTET STRING basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = {
+ sizeof(OCTET_STRING_t),
+ offsetof(OCTET_STRING_t, _asn_ctx),
+ ASN_OSUBV_STR
+};
+
+asn_TYPE_operation_t asn_OP_OCTET_STRING = {
+ OCTET_STRING_free,
+ OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */
+ OCTET_STRING_compare,
+ OCTET_STRING_decode_ber,
+ OCTET_STRING_encode_der,
+ OCTET_STRING_decode_xer_hex,
+ OCTET_STRING_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ OCTET_STRING_decode_oer,
+ OCTET_STRING_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ OCTET_STRING_decode_uper, /* Unaligned PER decoder */
+ OCTET_STRING_encode_uper, /* Unaligned PER encoder */
+ OCTET_STRING_decode_aper, /* Aligned PER decoder */
+ OCTET_STRING_encode_aper, /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ OCTET_STRING_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = {
+ "OCTET STRING", /* Canonical name */
+ "OCTET_STRING", /* XML tag name */
+ &asn_OP_OCTET_STRING,
+ asn_DEF_OCTET_STRING_tags,
+ sizeof(asn_DEF_OCTET_STRING_tags)
+ / sizeof(asn_DEF_OCTET_STRING_tags[0]),
+ asn_DEF_OCTET_STRING_tags, /* Same as above */
+ sizeof(asn_DEF_OCTET_STRING_tags)
+ / sizeof(asn_DEF_OCTET_STRING_tags[0]),
+ { 0, 0, asn_generic_no_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs
+};
+
+#undef _CH_PHASE
+#undef NEXT_PHASE
+#undef PREV_PHASE
+#define _CH_PHASE(ctx, inc) do { \
+ if(ctx->phase == 0) \
+ ctx->context = 0; \
+ ctx->phase += inc; \
+ } while(0)
+#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1)
+#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1)
+
+#undef ADVANCE
+#define ADVANCE(num_bytes) do { \
+ size_t num = (num_bytes); \
+ buf_ptr = ((const char *)buf_ptr) + num; \
+ size -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+#undef RETURN
+#define RETURN(_code) do { \
+ asn_dec_rval_t tmprval; \
+ tmprval.code = _code; \
+ tmprval.consumed = consumed_myself; \
+ return tmprval; \
+ } while(0)
+
+#undef APPEND
+#define APPEND(bufptr, bufsize) do { \
+ size_t _bs = (bufsize); /* Append size */ \
+ size_t _ns = ctx->context; /* Allocated now */ \
+ size_t _es = st->size + _bs; /* Expected size */ \
+ /* int is really a typeof(st->size): */ \
+ if((int)_es < 0) RETURN(RC_FAIL); \
+ if(_ns <= _es) { \
+ void *ptr; \
+ /* Be nice and round to the memory allocator */ \
+ do { _ns = _ns ? _ns << 1 : 16; } \
+ while(_ns <= _es); \
+ /* int is really a typeof(st->size): */ \
+ if((int)_ns < 0) RETURN(RC_FAIL); \
+ ptr = REALLOC(st->buf, _ns); \
+ if(ptr) { \
+ st->buf = (uint8_t *)ptr; \
+ ctx->context = _ns; \
+ } else { \
+ RETURN(RC_FAIL); \
+ } \
+ ASN_DEBUG("Reallocating into %ld", (long)_ns); \
+ } \
+ memcpy(st->buf + st->size, bufptr, _bs); \
+ /* Convenient nul-termination */ \
+ st->buf[_es] = '\0'; \
+ st->size = _es; \
+ } while(0)
+
+/*
+ * The main reason why ASN.1 is still alive is that too much time and effort
+ * is necessary for learning it more or less adequately, thus creating a gut
+ * necessity to demonstrate that aquired skill everywhere afterwards.
+ * No, I am not going to explain what the following stuff is.
+ */
+struct _stack_el {
+ ber_tlv_len_t left; /* What's left to read (or -1) */
+ ber_tlv_len_t got; /* What was actually processed */
+ unsigned cont_level; /* Depth of subcontainment */
+ int want_nulls; /* Want null "end of content" octets? */
+ int bits_chopped; /* Flag in BIT STRING mode */
+ ber_tlv_tag_t tag; /* For debugging purposes */
+ struct _stack_el *prev;
+ struct _stack_el *next;
+};
+struct _stack {
+ struct _stack_el *tail;
+ struct _stack_el *cur_ptr;
+};
+
+static struct _stack_el *
+OS__add_stack_el(struct _stack *st) {
+ struct _stack_el *nel;
+
+ /*
+ * Reuse the old stack frame or allocate a new one.
+ */
+ if(st->cur_ptr && st->cur_ptr->next) {
+ nel = st->cur_ptr->next;
+ nel->bits_chopped = 0;
+ nel->got = 0;
+ /* Retain the nel->cont_level, it's correct. */
+ } else {
+ nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el));
+ if(nel == NULL)
+ return NULL;
+
+ if(st->tail) {
+ /* Increase a subcontainment depth */
+ nel->cont_level = st->tail->cont_level + 1;
+ st->tail->next = nel;
+ }
+ nel->prev = st->tail;
+ st->tail = nel;
+ }
+
+ st->cur_ptr = nel;
+
+ return nel;
+}
+
+static struct _stack *
+_new_stack(void) {
+ return (struct _stack *)CALLOC(1, sizeof(struct _stack));
+}
+
+/*
+ * Decode OCTET STRING type.
+ */
+asn_dec_rval_t
+OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const void *buf_ptr, size_t size, int tag_mode) {
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ BIT_STRING_t *st = (BIT_STRING_t *)*sptr;
+ asn_dec_rval_t rval;
+ asn_struct_ctx_t *ctx;
+ ssize_t consumed_myself = 0;
+ struct _stack *stck; /* Expectations stack structure */
+ struct _stack_el *sel = 0; /* Stack element */
+ int tlv_constr;
+ enum asn_OS_Subvariant type_variant = specs->subvariant;
+
+ ASN_DEBUG("Decoding %s as %s (frame %ld)",
+ td->name,
+ (type_variant == ASN_OSUBV_STR) ?
+ "OCTET STRING" : "OS-SpecialCase",
+ (long)size);
+
+ /*
+ * Create the string if does not exist.
+ */
+ if(st == NULL) {
+ st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(st == NULL) RETURN(RC_FAIL);
+ }
+
+ /* Restore parsing context */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+ switch(ctx->phase) {
+ case 0:
+ /*
+ * Check tags.
+ */
+ rval = ber_check_tags(opt_codec_ctx, td, ctx,
+ buf_ptr, size, tag_mode, -1,
+ &ctx->left, &tlv_constr);
+ if(rval.code != RC_OK)
+ return rval;
+
+ if(tlv_constr) {
+ /*
+ * Complex operation, requires stack of expectations.
+ */
+ ctx->ptr = _new_stack();
+ if(!ctx->ptr) {
+ RETURN(RC_FAIL);
+ }
+ } else {
+ /*
+ * Jump into stackless primitive decoding.
+ */
+ _CH_PHASE(ctx, 3);
+ if(type_variant == ASN_OSUBV_ANY && tag_mode != 1)
+ APPEND(buf_ptr, rval.consumed);
+ ADVANCE(rval.consumed);
+ goto phase3;
+ }
+
+ NEXT_PHASE(ctx);
+ /* Fall through */
+ case 1:
+ phase1:
+ /*
+ * Fill the stack with expectations.
+ */
+ stck = (struct _stack *)ctx->ptr;
+ sel = stck->cur_ptr;
+ do {
+ ber_tlv_tag_t tlv_tag;
+ ber_tlv_len_t tlv_len;
+ ber_tlv_tag_t expected_tag;
+ ssize_t tl, ll, tlvl;
+ /* This one works even if (sel->left == -1) */
+ size_t Left = ((!sel||(size_t)sel->left >= size)
+ ?size:(size_t)sel->left);
+
+
+ ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel,
+ (long)(sel?sel->left:0),
+ (long)(sel?sel->want_nulls:0),
+ (long)(sel?sel->got:0)
+ );
+ if(sel && sel->left <= 0 && sel->want_nulls == 0) {
+ if(sel->prev) {
+ struct _stack_el *prev = sel->prev;
+ if(prev->left != -1) {
+ if(prev->left < sel->got)
+ RETURN(RC_FAIL);
+ prev->left -= sel->got;
+ }
+ prev->got += sel->got;
+ sel = stck->cur_ptr = prev;
+ if(!sel) break;
+ tlv_constr = 1;
+ continue;
+ } else {
+ sel = stck->cur_ptr = 0;
+ break; /* Nothing to wait */
+ }
+ }
+
+ tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag);
+ ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld",
+ (long)size, (long)Left, sel?"":"!",
+ (long)(sel?sel->left:0),
+ (long)(sel?sel->want_nulls:0),
+ (long)tl);
+ switch(tl) {
+ case -1: RETURN(RC_FAIL);
+ case 0: RETURN(RC_WMORE);
+ }
+
+ tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr);
+
+ ll = ber_fetch_length(tlv_constr,
+ (const char *)buf_ptr + tl,Left - tl,&tlv_len);
+ ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld",
+ ber_tlv_tag_string(tlv_tag), tlv_constr,
+ (long)Left, (long)tl, (long)tlv_len, (long)ll);
+ switch(ll) {
+ case -1: RETURN(RC_FAIL);
+ case 0: RETURN(RC_WMORE);
+ }
+
+ if(sel && sel->want_nulls
+ && ((const uint8_t *)buf_ptr)[0] == 0
+ && ((const uint8_t *)buf_ptr)[1] == 0)
+ {
+
+ ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls);
+
+ if(type_variant == ASN_OSUBV_ANY
+ && (tag_mode != 1 || sel->cont_level))
+ APPEND("\0\0", 2);
+
+ ADVANCE(2);
+ sel->got += 2;
+ if(sel->left != -1) {
+ sel->left -= 2; /* assert(sel->left >= 2) */
+ }
+
+ sel->want_nulls--;
+ if(sel->want_nulls == 0) {
+ /* Move to the next expectation */
+ sel->left = 0;
+ tlv_constr = 1;
+ }
+
+ continue;
+ }
+
+ /*
+ * Set up expected tags,
+ * depending on ASN.1 type being decoded.
+ */
+ switch(type_variant) {
+ case ASN_OSUBV_BIT:
+ /* X.690: 8.6.4.1, NOTE 2 */
+ /* Fall through */
+ case ASN_OSUBV_STR:
+ default:
+ if(sel) {
+ unsigned level = sel->cont_level;
+ if(level < td->all_tags_count) {
+ expected_tag = td->all_tags[level];
+ break;
+ } else if(td->all_tags_count) {
+ expected_tag = td->all_tags
+ [td->all_tags_count - 1];
+ break;
+ }
+ /* else, Fall through */
+ }
+ /* Fall through */
+ case ASN_OSUBV_ANY:
+ expected_tag = tlv_tag;
+ break;
+ }
+
+
+ if(tlv_tag != expected_tag) {
+ char buf[2][32];
+ ber_tlv_tag_snprint(tlv_tag,
+ buf[0], sizeof(buf[0]));
+ ber_tlv_tag_snprint(td->tags[td->tags_count-1],
+ buf[1], sizeof(buf[1]));
+ ASN_DEBUG("Tag does not match expectation: %s != %s",
+ buf[0], buf[1]);
+ RETURN(RC_FAIL);
+ }
+
+ tlvl = tl + ll; /* Combined length of T and L encoding */
+ if((tlv_len + tlvl) < 0) {
+ /* tlv_len value is too big */
+ ASN_DEBUG("TLV encoding + length (%ld) is too big",
+ (long)tlv_len);
+ RETURN(RC_FAIL);
+ }
+
+ /*
+ * Append a new expectation.
+ */
+ sel = OS__add_stack_el(stck);
+ if(!sel) RETURN(RC_FAIL);
+
+ sel->tag = tlv_tag;
+
+ sel->want_nulls = (tlv_len==-1);
+ if(sel->prev && sel->prev->left != -1) {
+ /* Check that the parent frame is big enough */
+ if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len))
+ RETURN(RC_FAIL);
+ if(tlv_len == -1)
+ sel->left = sel->prev->left - tlvl;
+ else
+ sel->left = tlv_len;
+ } else {
+ sel->left = tlv_len;
+ }
+ if(type_variant == ASN_OSUBV_ANY
+ && (tag_mode != 1 || sel->cont_level))
+ APPEND(buf_ptr, tlvl);
+ sel->got += tlvl;
+ ADVANCE(tlvl);
+
+ ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u",
+ (long)sel->got, (long)sel->left,
+ sel->want_nulls, sel->cont_level);
+
+ } while(tlv_constr);
+ if(sel == NULL) {
+ /* Finished operation, "phase out" */
+ ASN_DEBUG("Phase out");
+ _CH_PHASE(ctx, +3);
+ break;
+ }
+
+ NEXT_PHASE(ctx);
+ /* Fall through */
+ case 2:
+ stck = (struct _stack *)ctx->ptr;
+ sel = stck->cur_ptr;
+ ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d",
+ (long)sel->left, (long)size, (long)sel->got,
+ sel->want_nulls);
+ {
+ ber_tlv_len_t len;
+
+ assert(sel->left >= 0);
+
+ len = ((ber_tlv_len_t)size < sel->left)
+ ? (ber_tlv_len_t)size : sel->left;
+ if(len > 0) {
+ if(type_variant == ASN_OSUBV_BIT
+ && sel->bits_chopped == 0) {
+ /* Put the unused-bits-octet away */
+ st->bits_unused = *(const uint8_t *)buf_ptr;
+ APPEND(((const char *)buf_ptr+1), (len - 1));
+ sel->bits_chopped = 1;
+ } else {
+ APPEND(buf_ptr, len);
+ }
+ ADVANCE(len);
+ sel->left -= len;
+ sel->got += len;
+ }
+
+ if(sel->left) {
+ ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n",
+ (long)sel->left, (long)size, sel->want_nulls);
+ RETURN(RC_WMORE);
+ }
+
+ PREV_PHASE(ctx);
+ goto phase1;
+ }
+ break;
+ case 3:
+ phase3:
+ /*
+ * Primitive form, no stack required.
+ */
+ assert(ctx->left >= 0);
+
+ if(size < (size_t)ctx->left) {
+ if(!size) RETURN(RC_WMORE);
+ if(type_variant == ASN_OSUBV_BIT && !ctx->context) {
+ st->bits_unused = *(const uint8_t *)buf_ptr;
+ ctx->left--;
+ ADVANCE(1);
+ }
+ APPEND(buf_ptr, size);
+ assert(ctx->context > 0);
+ ctx->left -= size;
+ ADVANCE(size);
+ RETURN(RC_WMORE);
+ } else {
+ if(type_variant == ASN_OSUBV_BIT
+ && !ctx->context && ctx->left) {
+ st->bits_unused = *(const uint8_t *)buf_ptr;
+ ctx->left--;
+ ADVANCE(1);
+ }
+ APPEND(buf_ptr, ctx->left);
+ ADVANCE(ctx->left);
+ ctx->left = 0;
+
+ NEXT_PHASE(ctx);
+ }
+ break;
+ }
+
+ if(sel) {
+ ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld",
+ (void *)sel->prev, sel->want_nulls,
+ (long)sel->left, (long)sel->got, (long)size);
+ if(sel->prev || sel->want_nulls > 1 || sel->left > 0) {
+ RETURN(RC_WMORE);
+ }
+ }
+
+ /*
+ * BIT STRING-specific processing.
+ */
+ if(type_variant == ASN_OSUBV_BIT) {
+ if(st->size) {
+ if(st->bits_unused < 0 || st->bits_unused > 7) {
+ RETURN(RC_FAIL);
+ }
+ /* Finalize BIT STRING: zero out unused bits. */
+ st->buf[st->size-1] &= 0xff << st->bits_unused;
+ } else {
+ if(st->bits_unused) {
+ RETURN(RC_FAIL);
+ }
+ }
+ }
+
+ ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld",
+ (long)consumed_myself, td->name,
+ (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "",
+ (long)st->size);
+
+
+ RETURN(RC_OK);
+}
+
+/*
+ * Encode OCTET STRING type using DER.
+ */
+asn_enc_rval_t
+OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t er;
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ enum asn_OS_Subvariant type_variant = specs->subvariant;
+ int fix_last_byte = 0;
+
+ ASN_DEBUG("%s %s as OCTET STRING",
+ cb?"Estimating":"Encoding", td->name);
+
+ /*
+ * Write tags.
+ */
+ if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) {
+ er.encoded = der_write_tags(td,
+ (type_variant == ASN_OSUBV_BIT) + st->size,
+ tag_mode, type_variant == ASN_OSUBV_ANY, tag,
+ cb, app_key);
+ if(er.encoded == -1) {
+ er.failed_type = td;
+ er.structure_ptr = sptr;
+ return er;
+ }
+ } else {
+ /* Disallow: [] IMPLICIT ANY */
+ assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1);
+ er.encoded = 0;
+ }
+
+ if(!cb) {
+ er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size;
+ ASN__ENCODED_OK(er);
+ }
+
+ /*
+ * Prepare to deal with the last octet of BIT STRING.
+ */
+ if(type_variant == ASN_OSUBV_BIT) {
+ uint8_t b = st->bits_unused & 0x07;
+ if(b && st->size) fix_last_byte = 1;
+ ASN__CALLBACK(&b, 1);
+ }
+
+ /* Invoke callback for the main part of the buffer */
+ ASN__CALLBACK(st->buf, st->size - fix_last_byte);
+
+ /* The last octet should be stripped off the unused bits */
+ if(fix_last_byte) {
+ uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused);
+ ASN__CALLBACK(&b, 1);
+ }
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ ASN__ENCODE_FAILED;
+}
+
+asn_enc_rval_t
+OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const char * const h2c = "0123456789ABCDEF";
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ asn_enc_rval_t er;
+ char scratch[16 * 3 + 4];
+ char *p = scratch;
+ uint8_t *buf;
+ uint8_t *end;
+ size_t i;
+
+ if(!st || (!st->buf && st->size))
+ ASN__ENCODE_FAILED;
+
+ er.encoded = 0;
+
+ /*
+ * Dump the contents of the buffer in hexadecimal.
+ */
+ buf = st->buf;
+ end = buf + st->size;
+ if(flags & XER_F_CANONICAL) {
+ char *scend = scratch + (sizeof(scratch) - 2);
+ for(; buf < end; buf++) {
+ if(p >= scend) {
+ ASN__CALLBACK(scratch, p - scratch);
+ p = scratch;
+ }
+ *p++ = h2c[(*buf >> 4) & 0x0F];
+ *p++ = h2c[*buf & 0x0F];
+ }
+
+ ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */
+ } else {
+ for(i = 0; buf < end; buf++, i++) {
+ if(!(i % 16) && (i || st->size > 16)) {
+ ASN__CALLBACK(scratch, p-scratch);
+ p = scratch;
+ ASN__TEXT_INDENT(1, ilevel);
+ }
+ *p++ = h2c[(*buf >> 4) & 0x0F];
+ *p++ = h2c[*buf & 0x0F];
+ *p++ = 0x20;
+ }
+ if(p - scratch) {
+ p--; /* Remove the tail space */
+ ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */
+ if(st->size > 16)
+ ASN__TEXT_INDENT(1, ilevel-1);
+ }
+ }
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ ASN__ENCODE_FAILED;
+}
+
+static const struct OCTET_STRING__xer_escape_table_s {
+ const char *string;
+ int size;
+} OCTET_STRING__xer_escape_table[] = {
+#define OSXET(s) { s, sizeof(s) - 1 }
+ OSXET("\074\156\165\154\057\076"), /* */
+ OSXET("\074\163\157\150\057\076"), /* */
+ OSXET("\074\163\164\170\057\076"), /* */
+ OSXET("\074\145\164\170\057\076"), /* */
+ OSXET("\074\145\157\164\057\076"), /* */
+ OSXET("\074\145\156\161\057\076"), /* */
+ OSXET("\074\141\143\153\057\076"), /* */
+ OSXET("\074\142\145\154\057\076"), /* */
+ OSXET("\074\142\163\057\076"), /* */
+ OSXET("\011"), /* \t */
+ OSXET("\012"), /* \n */
+ OSXET("\074\166\164\057\076"), /* */
+ OSXET("\074\146\146\057\076"), /* */
+ OSXET("\015"), /* \r */
+ OSXET("\074\163\157\057\076"), /* */
+ OSXET("\074\163\151\057\076"), /* */
+ OSXET("\074\144\154\145\057\076"), /* */
+ OSXET("\074\144\143\061\057\076"), /* */
+ OSXET("\074\144\143\062\057\076"), /* */
+ OSXET("\074\144\143\063\057\076"), /* */
+ OSXET("\074\144\143\064\057\076"), /* */
+ OSXET("\074\156\141\153\057\076"), /* */
+ OSXET("\074\163\171\156\057\076"), /* */
+ OSXET("\074\145\164\142\057\076"), /* */
+ OSXET("\074\143\141\156\057\076"), /* */
+ OSXET("\074\145\155\057\076"), /* */
+ OSXET("\074\163\165\142\057\076"), /* */
+ OSXET("\074\145\163\143\057\076"), /* */
+ OSXET("\074\151\163\064\057\076"), /* */
+ OSXET("\074\151\163\063\057\076"), /* */
+ OSXET("\074\151\163\062\057\076"), /* */
+ OSXET("\074\151\163\061\057\076"), /* */
+ { 0, 0 }, /* " " */
+ { 0, 0 }, /* ! */
+ { 0, 0 }, /* \" */
+ { 0, 0 }, /* # */
+ { 0, 0 }, /* $ */
+ { 0, 0 }, /* % */
+ OSXET("\046\141\155\160\073"), /* & */
+ { 0, 0 }, /* ' */
+ {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */
+ {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */
+ {0,0},{0,0},{0,0},{0,0}, /* 89:; */
+ OSXET("\046\154\164\073"), /* < */
+ { 0, 0 }, /* = */
+ OSXET("\046\147\164\073"), /* > */
+};
+
+static int
+OS__check_escaped_control_char(const void *buf, int size) {
+ size_t i;
+ /*
+ * Inefficient algorithm which translates the escape sequences
+ * defined above into characters. Returns -1 if not found.
+ * TODO: replace by a faster algorithm (bsearch(), hash or
+ * nested table lookups).
+ */
+ for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) {
+ const struct OCTET_STRING__xer_escape_table_s *el;
+ el = &OCTET_STRING__xer_escape_table[i];
+ if(el->size == size && memcmp(buf, el->string, size) == 0)
+ return i;
+ }
+ return -1;
+}
+
+static int
+OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) {
+ /*
+ * This might be one of the escape sequences
+ * for control characters. Check it out.
+ * #11.15.5
+ */
+ int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size);
+ if(control_char >= 0) {
+ OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr;
+ void *p = REALLOC(st->buf, st->size + 2);
+ if(p) {
+ st->buf = (uint8_t *)p;
+ st->buf[st->size++] = control_char;
+ st->buf[st->size] = '\0'; /* nul-termination */
+ return 0;
+ }
+ }
+
+ return -1; /* No, it's not */
+}
+
+asn_enc_rval_t
+OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ asn_enc_rval_t er;
+ uint8_t *buf, *end;
+ uint8_t *ss; /* Sequence start */
+ ssize_t encoded_len = 0;
+
+ (void)ilevel; /* Unused argument */
+ (void)flags; /* Unused argument */
+
+ if(!st || (!st->buf && st->size))
+ ASN__ENCODE_FAILED;
+
+ buf = st->buf;
+ end = buf + st->size;
+ for(ss = buf; buf < end; buf++) {
+ unsigned int ch = *buf;
+ int s_len; /* Special encoding sequence length */
+
+ /*
+ * Escape certain characters: X.680/11.15
+ */
+ if(ch < sizeof(OCTET_STRING__xer_escape_table)
+ /sizeof(OCTET_STRING__xer_escape_table[0])
+ && (s_len = OCTET_STRING__xer_escape_table[ch].size)) {
+ if(((buf - ss) && cb(ss, buf - ss, app_key) < 0)
+ || cb(OCTET_STRING__xer_escape_table[ch].string, s_len,
+ app_key) < 0)
+ ASN__ENCODE_FAILED;
+ encoded_len += (buf - ss) + s_len;
+ ss = buf + 1;
+ }
+ }
+
+ encoded_len += (buf - ss);
+ if((buf - ss) && cb(ss, buf - ss, app_key) < 0)
+ ASN__ENCODE_FAILED;
+
+ er.encoded = encoded_len;
+ ASN__ENCODED_OK(er);
+}
+
+/*
+ * Convert from hexadecimal format (cstring): "AB CD EF"
+ */
+static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) {
+ OCTET_STRING_t *st = (OCTET_STRING_t *)sptr;
+ const char *chunk_stop = (const char *)chunk_buf;
+ const char *p = chunk_stop;
+ const char *pend = p + chunk_size;
+ unsigned int clv = 0;
+ int half = 0; /* Half bit */
+ uint8_t *buf;
+
+ /* Reallocate buffer according to high cap estimation */
+ size_t new_size = st->size + (chunk_size + 1) / 2;
+ void *nptr = REALLOC(st->buf, new_size + 1);
+ if(!nptr) return -1;
+ st->buf = (uint8_t *)nptr;
+ buf = st->buf + st->size;
+
+ /*
+ * If something like " a b c " appears here, the " a b":3 will be
+ * converted, and the rest skipped. That is, unless buf_size is greater
+ * than chunk_size, then it'll be equivalent to "ABC0".
+ */
+ for(; p < pend; p++) {
+ int ch = *(const unsigned char *)p;
+ switch(ch) {
+ case 0x09: case 0x0a: case 0x0c: case 0x0d:
+ case 0x20:
+ /* Ignore whitespace */
+ continue;
+ case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/
+ case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/
+ clv = (clv << 4) + (ch - 0x30);
+ break;
+ case 0x41: case 0x42: case 0x43: /* ABC */
+ case 0x44: case 0x45: case 0x46: /* DEF */
+ clv = (clv << 4) + (ch - 0x41 + 10);
+ break;
+ case 0x61: case 0x62: case 0x63: /* abc */
+ case 0x64: case 0x65: case 0x66: /* def */
+ clv = (clv << 4) + (ch - 0x61 + 10);
+ break;
+ default:
+ *buf = 0; /* JIC */
+ return -1;
+ }
+ if(half++) {
+ half = 0;
+ *buf++ = clv;
+ chunk_stop = p + 1;
+ }
+ }
+
+ /*
+ * Check partial decoding.
+ */
+ if(half) {
+ if(have_more) {
+ /*
+ * Partial specification is fine,
+ * because no more more PXER_TEXT data is available.
+ */
+ *buf++ = clv << 4;
+ chunk_stop = p;
+ }
+ } else {
+ chunk_stop = p;
+ }
+
+ st->size = buf - st->buf; /* Adjust the buffer size */
+ assert(st->size <= new_size);
+ st->buf[st->size] = 0; /* Courtesy termination */
+
+ return (chunk_stop - (const char *)chunk_buf); /* Converted size */
+}
+
+/*
+ * Convert from binary format: "00101011101"
+ */
+static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) {
+ BIT_STRING_t *st = (BIT_STRING_t *)sptr;
+ const char *p = (const char *)chunk_buf;
+ const char *pend = p + chunk_size;
+ int bits_unused = st->bits_unused & 0x7;
+ uint8_t *buf;
+
+ /* Reallocate buffer according to high cap estimation */
+ size_t new_size = st->size + (chunk_size + 7) / 8;
+ void *nptr = REALLOC(st->buf, new_size + 1);
+ if(!nptr) return -1;
+ st->buf = (uint8_t *)nptr;
+ buf = st->buf + st->size;
+
+ (void)have_more;
+
+ if(bits_unused == 0)
+ bits_unused = 8;
+ else if(st->size)
+ buf--;
+
+ /*
+ * Convert series of 0 and 1 into the octet string.
+ */
+ for(; p < pend; p++) {
+ int ch = *(const unsigned char *)p;
+ switch(ch) {
+ case 0x09: case 0x0a: case 0x0c: case 0x0d:
+ case 0x20:
+ /* Ignore whitespace */
+ break;
+ case 0x30:
+ case 0x31:
+ if(bits_unused-- <= 0) {
+ *++buf = 0; /* Clean the cell */
+ bits_unused = 7;
+ }
+ *buf |= (ch&1) << bits_unused;
+ break;
+ default:
+ st->bits_unused = bits_unused;
+ return -1;
+ }
+ }
+
+ if(bits_unused == 8) {
+ st->size = buf - st->buf;
+ st->bits_unused = 0;
+ } else {
+ st->size = buf - st->buf + 1;
+ st->bits_unused = bits_unused;
+ }
+
+ assert(st->size <= new_size);
+ st->buf[st->size] = 0; /* Courtesy termination */
+
+ return chunk_size; /* Converted in full */
+}
+
+/*
+ * Something like strtod(), but with stricter rules.
+ */
+static int
+OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) {
+ const int32_t last_unicode_codepoint = 0x10ffff;
+ int32_t val = 0;
+ const char *p;
+
+ for(p = buf; p < end; p++) {
+ int ch = *p;
+
+ switch(ch) {
+ case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/
+ case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/
+ val = val * base + (ch - 0x30);
+ break;
+ case 0x41: case 0x42: case 0x43: /* ABC */
+ case 0x44: case 0x45: case 0x46: /* DEF */
+ val = val * base + (ch - 0x41 + 10);
+ break;
+ case 0x61: case 0x62: case 0x63: /* abc */
+ case 0x64: case 0x65: case 0x66: /* def */
+ val = val * base + (ch - 0x61 + 10);
+ break;
+ case 0x3b: /* ';' */
+ *ret_value = val;
+ return (p - buf) + 1;
+ default:
+ return -1; /* Character set error */
+ }
+
+ /* Value exceeds the Unicode range. */
+ if(val > last_unicode_codepoint) {
+ return -1;
+ }
+ }
+
+ *ret_value = -1;
+ return (p - buf);
+}
+
+/*
+ * Convert from the plain UTF-8 format, expanding entity references: "2 < 3"
+ */
+static ssize_t
+OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf,
+ size_t chunk_size, int have_more) {
+ OCTET_STRING_t *st = (OCTET_STRING_t *)sptr;
+ const char *p = (const char *)chunk_buf;
+ const char *pend = p + chunk_size;
+ uint8_t *buf;
+
+ /* Reallocate buffer */
+ size_t new_size = st->size + chunk_size;
+ void *nptr = REALLOC(st->buf, new_size + 1);
+ if(!nptr) return -1;
+ st->buf = (uint8_t *)nptr;
+ buf = st->buf + st->size;
+
+ /*
+ * Convert series of 0 and 1 into the octet string.
+ */
+ for(; p < pend; p++) {
+ int ch = *(const unsigned char *)p;
+ int len; /* Length of the rest of the chunk */
+
+ if(ch != 0x26 /* '&' */) {
+ *buf++ = ch;
+ continue; /* That was easy... */
+ }
+
+ /*
+ * Process entity reference.
+ */
+ len = chunk_size - (p - (const char *)chunk_buf);
+ if(len == 1 /* "&" */) goto want_more;
+ if(p[1] == 0x23 /* '#' */) {
+ const char *pval; /* Pointer to start of digits */
+ int32_t val = 0; /* Entity reference value */
+ int base;
+
+ if(len == 2 /* "" */) goto want_more;
+ if(p[2] == 0x78 /* 'x' */)
+ pval = p + 3, base = 16;
+ else
+ pval = p + 2, base = 10;
+ len = OS__strtoent(base, pval, p + len, &val);
+ if(len == -1) {
+ /* Invalid charset. Just copy verbatim. */
+ *buf++ = ch;
+ continue;
+ }
+ if(!len || pval[len-1] != 0x3b) goto want_more;
+ assert(val > 0);
+ p += (pval - p) + len - 1; /* Advance past entref */
+
+ if(val < 0x80) {
+ *buf++ = (char)val;
+ } else if(val < 0x800) {
+ *buf++ = 0xc0 | ((val >> 6));
+ *buf++ = 0x80 | ((val & 0x3f));
+ } else if(val < 0x10000) {
+ *buf++ = 0xe0 | ((val >> 12));
+ *buf++ = 0x80 | ((val >> 6) & 0x3f);
+ *buf++ = 0x80 | ((val & 0x3f));
+ } else if(val < 0x200000) {
+ *buf++ = 0xf0 | ((val >> 18));
+ *buf++ = 0x80 | ((val >> 12) & 0x3f);
+ *buf++ = 0x80 | ((val >> 6) & 0x3f);
+ *buf++ = 0x80 | ((val & 0x3f));
+ } else if(val < 0x4000000) {
+ *buf++ = 0xf8 | ((val >> 24));
+ *buf++ = 0x80 | ((val >> 18) & 0x3f);
+ *buf++ = 0x80 | ((val >> 12) & 0x3f);
+ *buf++ = 0x80 | ((val >> 6) & 0x3f);
+ *buf++ = 0x80 | ((val & 0x3f));
+ } else {
+ *buf++ = 0xfc | ((val >> 30) & 0x1);
+ *buf++ = 0x80 | ((val >> 24) & 0x3f);
+ *buf++ = 0x80 | ((val >> 18) & 0x3f);
+ *buf++ = 0x80 | ((val >> 12) & 0x3f);
+ *buf++ = 0x80 | ((val >> 6) & 0x3f);
+ *buf++ = 0x80 | ((val & 0x3f));
+ }
+ } else {
+ /*
+ * Ugly, limited parsing of & > <
+ */
+ char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len);
+ if(!sc) goto want_more;
+ if((sc - p) == 4
+ && p[1] == 0x61 /* 'a' */
+ && p[2] == 0x6d /* 'm' */
+ && p[3] == 0x70 /* 'p' */) {
+ *buf++ = 0x26;
+ p = sc;
+ continue;
+ }
+ if((sc - p) == 3) {
+ if(p[1] == 0x6c) {
+ *buf = 0x3c; /* '<' */
+ } else if(p[1] == 0x67) {
+ *buf = 0x3e; /* '>' */
+ } else {
+ /* Unsupported entity reference */
+ *buf++ = ch;
+ continue;
+ }
+ if(p[2] != 0x74) {
+ /* Unsupported entity reference */
+ *buf++ = ch;
+ continue;
+ }
+ buf++;
+ p = sc;
+ continue;
+ }
+ /* Unsupported entity reference */
+ *buf++ = ch;
+ }
+
+ continue;
+ want_more:
+ if(have_more) {
+ /*
+ * We know that no more data (of the same type)
+ * is coming. Copy the rest verbatim.
+ */
+ *buf++ = ch;
+ continue;
+ }
+ chunk_size = (p - (const char *)chunk_buf);
+ /* Processing stalled: need more data */
+ break;
+ }
+
+ st->size = buf - st->buf;
+ assert(st->size <= new_size);
+ st->buf[st->size] = 0; /* Courtesy termination */
+
+ return chunk_size; /* Converted in full */
+}
+
+/*
+ * Decode OCTET STRING from the XML element's body.
+ */
+static asn_dec_rval_t
+OCTET_STRING__decode_xer(
+ const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td,
+ void **sptr, const char *opt_mname, const void *buf_ptr, size_t size,
+ int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf,
+ size_t chunk_size),
+ ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf,
+ size_t chunk_size, int have_more)) {
+ OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr;
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
+ asn_struct_ctx_t *ctx; /* Per-structure parser context */
+ asn_dec_rval_t rval; /* Return value from the decoder */
+ int st_allocated;
+
+ /*
+ * Create the string if does not exist.
+ */
+ if(!st) {
+ st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size);
+ *sptr = (void *)st;
+ if(!st) goto sta_failed;
+ st_allocated = 1;
+ } else {
+ st_allocated = 0;
+ }
+ if(!st->buf) {
+ /* This is separate from above section */
+ st->buf = (uint8_t *)CALLOC(1, 1);
+ if(!st->buf) {
+ if(st_allocated) {
+ *sptr = 0;
+ goto stb_failed;
+ } else {
+ goto sta_failed;
+ }
+ }
+ }
+
+ /* Restore parsing context */
+ ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset);
+
+ return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag,
+ buf_ptr, size, opt_unexpected_tag_decoder, body_receiver);
+
+stb_failed:
+ FREEMEM(st);
+sta_failed:
+ rval.code = RC_FAIL;
+ rval.consumed = 0;
+ return rval;
+}
+
+/*
+ * Decode OCTET STRING from the hexadecimal data.
+ */
+asn_dec_rval_t
+OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr,
+ size_t size) {
+ return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
+ buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal);
+}
+
+/*
+ * Decode OCTET STRING from the binary (0/1) data.
+ */
+asn_dec_rval_t
+OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr,
+ size_t size) {
+ return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
+ buf_ptr, size, 0, OCTET_STRING__convert_binary);
+}
+
+/*
+ * Decode OCTET STRING from the string (ASCII/UTF-8) data.
+ */
+asn_dec_rval_t
+OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const char *opt_mname, const void *buf_ptr,
+ size_t size) {
+ return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
+ buf_ptr, size,
+ OCTET_STRING__handle_control_chars,
+ OCTET_STRING__convert_entrefs);
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+static int
+OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf,
+ size_t units, unsigned int bpc, unsigned int unit_bits,
+ long lb, long ub, const asn_per_constraints_t *pc) {
+ uint8_t *end = buf + units * bpc;
+
+ ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d",
+ (int)units, lb, ub, unit_bits);
+
+ /* X.691: 27.5.4 */
+ if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) {
+ /* Decode without translation */
+ lb = 0;
+ } else if(pc && pc->code2value) {
+ if(unit_bits > 16)
+ return 1; /* FATAL: can't have constrained
+ * UniversalString with more than
+ * 16 million code points */
+ for(; buf < end; buf += bpc) {
+ int value;
+ int code = per_get_few_bits(po, unit_bits);
+ if(code < 0) return -1; /* WMORE */
+ value = pc->code2value(code);
+ if(value < 0) {
+ ASN_DEBUG("Code %d (0x%02x) is"
+ " not in map (%ld..%ld)",
+ code, code, lb, ub);
+ return 1; /* FATAL */
+ }
+ switch(bpc) {
+ case 1: *buf = value; break;
+ case 2: buf[0] = value >> 8; buf[1] = value; break;
+ case 4: buf[0] = value >> 24; buf[1] = value >> 16;
+ buf[2] = value >> 8; buf[3] = value; break;
+ }
+ }
+ return 0;
+ }
+
+ /* Shortcut the no-op copying to the aligned structure */
+ if(lb == 0 && (unit_bits == 8 * bpc)) {
+ return per_get_many_bits(po, buf, 0, unit_bits * units);
+ }
+
+ for(; buf < end; buf += bpc) {
+ int32_t code = per_get_few_bits(po, unit_bits);
+ int32_t ch = code + lb;
+ if(code < 0) return -1; /* WMORE */
+ if(ch > ub) {
+ ASN_DEBUG("Code %d is out of range (%ld..%ld)",
+ ch, lb, ub);
+ return 1; /* FATAL */
+ }
+ switch(bpc) {
+ case 1: *buf = ch; break;
+ case 2: buf[0] = ch >> 8; buf[1] = ch; break;
+ case 4: buf[0] = ch >> 24; buf[1] = ch >> 16;
+ buf[2] = ch >> 8; buf[3] = ch; break;
+ }
+ }
+
+ return 0;
+}
+
+static int
+OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf,
+ size_t units, unsigned int bpc, unsigned int unit_bits,
+ long lb, long ub, const asn_per_constraints_t *pc) {
+ const uint8_t *end = buf + units * bpc;
+
+ ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)",
+ (int)units, lb, ub, unit_bits, bpc);
+
+ /* X.691: 27.5.4 */
+ if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) {
+ /* Encode as is */
+ lb = 0;
+ } else if(pc && pc->value2code) {
+ for(; buf < end; buf += bpc) {
+ int code;
+ uint32_t value;
+ switch(bpc) {
+ case 1: value = *(const uint8_t *)buf; break;
+ case 2: value = (buf[0] << 8) | buf[1]; break;
+ case 4: value = (buf[0] << 24) | (buf[1] << 16)
+ | (buf[2] << 8) | buf[3]; break;
+ default: return -1;
+ }
+ code = pc->value2code(value);
+ if(code < 0) {
+ ASN_DEBUG("Character %d (0x%02x) is"
+ " not in map (%ld..%ld)",
+ *buf, *buf, lb, ub);
+ return -1;
+ }
+ if(per_put_few_bits(po, code, unit_bits))
+ return -1;
+ }
+ }
+
+ /* Shortcut the no-op copying to the aligned structure */
+ if(lb == 0 && (unit_bits == 8 * bpc)) {
+ return per_put_many_bits(po, buf, unit_bits * units);
+ }
+
+ for(ub -= lb; buf < end; buf += bpc) {
+ int ch;
+ uint32_t value;
+ switch(bpc) {
+ case 1:
+ value = *(const uint8_t *)buf;
+ break;
+ case 2:
+ value = (buf[0] << 8) | buf[1];
+ break;
+ case 4:
+ value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ break;
+ default:
+ return -1;
+ }
+ ch = value - lb;
+ if(ch < 0 || ch > ub) {
+ ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf,
+ value, lb, ub + lb);
+ return -1;
+ }
+ if(per_put_few_bits(po, ch, unit_bits)) return -1;
+ }
+
+ return 0;
+}
+
+static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = {
+ { APC_CONSTRAINED, 8, 8, 0, 255 },
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 },
+ 0, 0
+};
+
+asn_dec_rval_t
+OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ const asn_per_constraints_t *pc =
+ constraints ? constraints : td->encoding_constraints.per_constraints;
+ const asn_per_constraint_t *cval;
+ const asn_per_constraint_t *csiz;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr;
+ ssize_t consumed_myself = 0;
+ int repeat;
+ enum {
+ OS__BPC_CHAR = 1,
+ OS__BPC_U16 = 2,
+ OS__BPC_U32 = 4
+ } bpc; /* Bytes per character */
+ unsigned int unit_bits;
+ unsigned int canonical_unit_bits;
+
+ (void)opt_codec_ctx;
+
+ if(pc) {
+ cval = &pc->value;
+ csiz = &pc->size;
+ } else {
+ cval = &asn_DEF_OCTET_STRING_constraints.value;
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ }
+
+ switch(specs->subvariant) {
+ default:
+ case ASN_OSUBV_ANY:
+ case ASN_OSUBV_BIT:
+ ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant);
+ RETURN(RC_FAIL);
+ break;
+ case ASN_OSUBV_STR:
+ canonical_unit_bits = unit_bits = 8;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_CHAR;
+ break;
+ case ASN_OSUBV_U16:
+ canonical_unit_bits = unit_bits = 16;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U16;
+ break;
+ case ASN_OSUBV_U32:
+ canonical_unit_bits = unit_bits = 32;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U32;
+ break;
+ }
+
+ /*
+ * Allocate the string.
+ */
+ if(!st) {
+ st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) RETURN(RC_FAIL);
+ }
+
+ ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d",
+ csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible",
+ csiz->lower_bound, csiz->upper_bound, csiz->effective_bits);
+
+ if(csiz->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) RETURN(RC_WMORE);
+ if(inext) {
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ unit_bits = canonical_unit_bits;
+ }
+ }
+
+ if(csiz->effective_bits >= 0) {
+ FREEMEM(st->buf);
+ if(bpc) {
+ st->size = csiz->upper_bound * bpc;
+ } else {
+ st->size = (csiz->upper_bound + 7) >> 3;
+ }
+ st->buf = (uint8_t *)MALLOC(st->size + 1);
+ if(!st->buf) { st->size = 0; RETURN(RC_FAIL); }
+ }
+
+ /* X.691, #16.5: zero-length encoding */
+ /* X.691, #16.6: short fixed length encoding (up to 2 octets) */
+ /* X.691, #16.7: long fixed length encoding (up to 64K octets) */
+ if(csiz->effective_bits == 0) {
+ int ret;
+ if(bpc) {
+ ASN_DEBUG("Encoding OCTET STRING size %ld",
+ csiz->upper_bound);
+ ret = OCTET_STRING_per_get_characters(pd, st->buf,
+ csiz->upper_bound, bpc, unit_bits,
+ cval->lower_bound, cval->upper_bound, pc);
+ if(ret > 0) RETURN(RC_FAIL);
+ } else {
+ ASN_DEBUG("Encoding BIT STRING size %ld",
+ csiz->upper_bound);
+ ret = per_get_many_bits(pd, st->buf, 0,
+ unit_bits * csiz->upper_bound);
+ }
+ if(ret < 0) RETURN(RC_WMORE);
+ consumed_myself += unit_bits * csiz->upper_bound;
+ st->buf[st->size] = 0;
+ RETURN(RC_OK);
+ }
+
+ st->size = 0;
+ do {
+ ssize_t raw_len;
+ ssize_t len_bytes;
+ void *p;
+ int ret;
+
+ /* Get the PER length */
+ raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound,
+ &repeat);
+ if(raw_len < 0) RETURN(RC_WMORE);
+ if(raw_len == 0 && st->buf) break;
+
+ ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)",
+ (long)csiz->effective_bits, (long)raw_len,
+ repeat ? "repeat" : "once", td->name);
+ len_bytes = raw_len * bpc;
+ p = REALLOC(st->buf, st->size + len_bytes + 1);
+ if(!p) RETURN(RC_FAIL);
+ st->buf = (uint8_t *)p;
+
+ ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len,
+ bpc, unit_bits, cval->lower_bound,
+ cval->upper_bound, pc);
+ if(ret > 0) RETURN(RC_FAIL);
+ if(ret < 0) RETURN(RC_WMORE);
+ st->size += len_bytes;
+ } while(repeat);
+ st->buf[st->size] = 0; /* nul-terminate */
+
+ return rval;
+}
+
+asn_enc_rval_t
+OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ const asn_per_constraints_t *pc = constraints ? constraints
+ : td->encoding_constraints.per_constraints;
+ const asn_per_constraint_t *cval;
+ const asn_per_constraint_t *csiz;
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ asn_enc_rval_t er = { 0, 0, 0 };
+ int inext = 0; /* Lies not within extension root */
+ unsigned int unit_bits;
+ unsigned int canonical_unit_bits;
+ size_t size_in_units;
+ const uint8_t *buf;
+ int ret;
+ enum {
+ OS__BPC_CHAR = 1,
+ OS__BPC_U16 = 2,
+ OS__BPC_U32 = 4
+ } bpc; /* Bytes per character */
+ int ct_extensible;
+
+ if(!st || (!st->buf && st->size))
+ ASN__ENCODE_FAILED;
+
+ if(pc) {
+ cval = &pc->value;
+ csiz = &pc->size;
+ } else {
+ cval = &asn_DEF_OCTET_STRING_constraints.value;
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ }
+ ct_extensible = csiz->flags & APC_EXTENSIBLE;
+
+ switch(specs->subvariant) {
+ default:
+ case ASN_OSUBV_ANY:
+ case ASN_OSUBV_BIT:
+ ASN__ENCODE_FAILED;
+ case ASN_OSUBV_STR:
+ canonical_unit_bits = unit_bits = 8;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_CHAR;
+ size_in_units = st->size;
+ break;
+ case ASN_OSUBV_U16:
+ canonical_unit_bits = unit_bits = 16;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U16;
+ size_in_units = st->size >> 1;
+ if(st->size & 1) {
+ ASN_DEBUG("%s string size is not modulo 2", td->name);
+ ASN__ENCODE_FAILED;
+ }
+ break;
+ case ASN_OSUBV_U32:
+ canonical_unit_bits = unit_bits = 32;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U32;
+ size_in_units = st->size >> 2;
+ if(st->size & 3) {
+ ASN_DEBUG("%s string size is not modulo 4", td->name);
+ ASN__ENCODE_FAILED;
+ }
+ break;
+ }
+
+ ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits"
+ " (%ld..%ld, effective %d)%s",
+ td->name, size_in_units, unit_bits,
+ csiz->lower_bound, csiz->upper_bound,
+ csiz->effective_bits, ct_extensible ? " EXT" : "");
+
+ /* Figure out whether size lies within PER visible constraint */
+
+ if(csiz->effective_bits >= 0) {
+ if((ssize_t)size_in_units < csiz->lower_bound
+ || (ssize_t)size_in_units > csiz->upper_bound) {
+ if(ct_extensible) {
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ unit_bits = canonical_unit_bits;
+ inext = 1;
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+ }
+ } else {
+ inext = 0;
+ }
+
+ if(ct_extensible) {
+ /* Declare whether length is [not] within extension root */
+ if(per_put_few_bits(po, inext, 1))
+ ASN__ENCODE_FAILED;
+ }
+
+ if(csiz->effective_bits >= 0 && !inext) {
+ ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size,
+ size_in_units - csiz->lower_bound, csiz->effective_bits);
+ ret = per_put_few_bits(po, size_in_units - csiz->lower_bound,
+ csiz->effective_bits);
+ if(ret) ASN__ENCODE_FAILED;
+ ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc,
+ unit_bits, cval->lower_bound,
+ cval->upper_bound, pc);
+ if(ret) ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ }
+
+ ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size);
+
+ buf = st->buf;
+ ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units);
+ do {
+ int need_eom = 0;
+ ssize_t may_save = uper_put_length(po, size_in_units, &need_eom);
+ if(may_save < 0) ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units,
+ need_eom ? ",+EOM" : "");
+
+ ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits,
+ cval->lower_bound,
+ cval->upper_bound, pc);
+ if(ret) ASN__ENCODE_FAILED;
+
+ buf += may_save * bpc;
+ size_in_units -= may_save;
+ assert(!(may_save & 0x07) || !size_in_units);
+ if(need_eom && uper_put_length(po, 0, 0))
+ ASN__ENCODE_FAILED; /* End of Message length */
+ } while(size_in_units);
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ void **sptr, asn_per_data_t *pd) {
+
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ const asn_per_constraints_t *pc = constraints ? constraints
+ : td->encoding_constraints.per_constraints;
+ const asn_per_constraint_t *cval;
+ const asn_per_constraint_t *csiz;
+ asn_dec_rval_t rval = { RC_OK, 0 };
+ BIT_STRING_t *st = (BIT_STRING_t *)*sptr;
+ ssize_t consumed_myself = 0;
+ int repeat;
+ enum {
+ OS__BPC_BIT = 0,
+ OS__BPC_CHAR = 1,
+ OS__BPC_U16 = 2,
+ OS__BPC_U32 = 4
+ } bpc; /* Bytes per character */
+ unsigned int unit_bits;
+ unsigned int canonical_unit_bits;
+
+ (void)opt_codec_ctx;
+
+ if(pc) {
+ cval = &pc->value;
+ csiz = &pc->size;
+ } else {
+ cval = &asn_DEF_OCTET_STRING_constraints.value;
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ }
+
+ switch(specs->subvariant) {
+ default:
+/* case ASN_OSUBV_ANY:
+ ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant);
+ RETURN(RC_FAIL);
+*/
+ case ASN_OSUBV_BIT:
+ canonical_unit_bits = unit_bits = 1;
+ bpc = OS__BPC_BIT;
+ break;
+ case ASN_OSUBV_ANY:
+ case ASN_OSUBV_STR:
+ canonical_unit_bits = unit_bits = 8;
+/* if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+*/
+ bpc = OS__BPC_CHAR;
+ break;
+ case ASN_OSUBV_U16:
+ canonical_unit_bits = unit_bits = 16;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U16;
+ break;
+ case ASN_OSUBV_U32:
+ canonical_unit_bits = unit_bits = 32;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U32;
+ break;
+ }
+
+ /*
+ * Allocate the string.
+ */
+ if(!st) {
+ st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) RETURN(RC_FAIL);
+ }
+
+ ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d",
+ csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible",
+ csiz->lower_bound, csiz->upper_bound, csiz->effective_bits);
+
+ if(csiz->flags & APC_EXTENSIBLE) {
+ int inext = per_get_few_bits(pd, 1);
+ if(inext < 0) RETURN(RC_WMORE);
+ if(inext) {
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ cval = &asn_DEF_OCTET_STRING_constraints.value;
+ unit_bits = canonical_unit_bits;
+ }
+ }
+
+ if(csiz->effective_bits >= 0) {
+ FREEMEM(st->buf);
+ if(bpc) {
+ st->size = csiz->upper_bound * bpc;
+ } else {
+ st->size = (csiz->upper_bound + 7) >> 3;
+ }
+ st->buf = (uint8_t *)MALLOC(st->size + 1);
+ if(!st->buf) { st->size = 0; RETURN(RC_FAIL); }
+ }
+
+ /* X.691, #16.5: zero-length encoding */
+ /* X.691, #16.6: short fixed length encoding (up to 2 octets) */
+ /* X.691, #16.7: long fixed length encoding (up to 64K octets) */
+ if(csiz->effective_bits == 0) {
+ int ret;
+ if (st->size > 2) { /* X.691 #16 NOTE 1 */
+ if (aper_get_align(pd) < 0)
+ RETURN(RC_FAIL);
+ }
+ if(bpc) {
+ ASN_DEBUG("Decoding OCTET STRING size %ld",
+ csiz->upper_bound);
+ ret = OCTET_STRING_per_get_characters(pd, st->buf,
+ csiz->upper_bound, bpc, unit_bits,
+ cval->lower_bound, cval->upper_bound, pc);
+ if(ret > 0) RETURN(RC_FAIL);
+ } else {
+ ASN_DEBUG("Decoding BIT STRING size %ld",
+ csiz->upper_bound);
+ ret = per_get_many_bits(pd, st->buf, 0,
+ unit_bits * csiz->upper_bound);
+ }
+ if(ret < 0) RETURN(RC_WMORE);
+ consumed_myself += unit_bits * csiz->upper_bound;
+ st->buf[st->size] = 0;
+ if(bpc == 0) {
+ int ubs = (csiz->upper_bound & 0x7);
+ st->bits_unused = ubs ? 8 - ubs : 0;
+ }
+ RETURN(RC_OK);
+ }
+
+ st->size = 0;
+ do {
+ ssize_t raw_len;
+ ssize_t len_bytes;
+ ssize_t len_bits;
+ void *p;
+ int ret;
+
+ /* Get the PER length */
+ if (csiz->upper_bound - csiz->lower_bound == 0)
+ /* Indefinite length case */
+ raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat);
+ else
+ raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat);
+ repeat = 0;
+ if(raw_len < 0) RETURN(RC_WMORE);
+ raw_len += csiz->lower_bound;
+
+ ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)",
+ (long)csiz->effective_bits, (long)raw_len,
+ repeat ? "repeat" : "once", td->name);
+
+ if (raw_len > 2) { /* X.691 #16 NOTE 1 */
+ if (aper_get_align(pd) < 0)
+ RETURN(RC_FAIL);
+ }
+
+ if(bpc) {
+ len_bytes = raw_len * bpc;
+ len_bits = len_bytes * unit_bits;
+ } else {
+ len_bits = raw_len;
+ len_bytes = (len_bits + 7) >> 3;
+ if(len_bits & 0x7)
+ st->bits_unused = 8 - (len_bits & 0x7);
+ /* len_bits be multiple of 16K if repeat is set */
+ }
+ p = REALLOC(st->buf, st->size + len_bytes + 1);
+ if(!p) RETURN(RC_FAIL);
+ st->buf = (uint8_t *)p;
+
+ if(bpc) {
+ ret = OCTET_STRING_per_get_characters(pd,
+ &st->buf[st->size], raw_len, bpc, unit_bits,
+ cval->lower_bound, cval->upper_bound, pc);
+ if(ret > 0) RETURN(RC_FAIL);
+ } else {
+ ret = per_get_many_bits(pd, &st->buf[st->size],
+ 0, len_bits);
+ }
+ if(ret < 0) RETURN(RC_WMORE);
+ st->size += len_bytes;
+ } while(repeat);
+ st->buf[st->size] = 0; /* nul-terminate */
+
+ return rval;
+}
+
+asn_enc_rval_t
+OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ const asn_per_constraints_t *pc = constraints ? constraints
+ : td->encoding_constraints.per_constraints;
+ const asn_per_constraint_t *cval;
+ const asn_per_constraint_t *csiz;
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ asn_enc_rval_t er = { 0, 0, 0 };
+ int inext = 0; /* Lies not within extension root */
+ unsigned int unit_bits;
+ unsigned int canonical_unit_bits;
+ unsigned int sizeinunits;
+ const uint8_t *buf;
+ int ret;
+ enum {
+ OS__BPC_BIT = 0,
+ OS__BPC_CHAR = 1,
+ OS__BPC_U16 = 2,
+ OS__BPC_U32 = 4
+ } bpc; /* Bytes per character */
+ int ct_extensible;
+
+ if(!st || (!st->buf && st->size))
+ ASN__ENCODE_FAILED;
+
+ if(pc) {
+ cval = &pc->value;
+ csiz = &pc->size;
+ } else {
+ cval = &asn_DEF_OCTET_STRING_constraints.value;
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ }
+ ct_extensible = csiz->flags & APC_EXTENSIBLE;
+
+ switch(specs->subvariant) {
+ default:
+ /* case ASN_OSUBV_ANY:
+ ASN__ENCODE_FAILED;
+ */
+ case ASN_OSUBV_BIT:
+ canonical_unit_bits = unit_bits = 1;
+ bpc = OS__BPC_BIT;
+ sizeinunits = st->size * 8 - (st->bits_unused & 0x07);
+ ASN_DEBUG("BIT STRING of %d bytes",
+ sizeinunits);
+ break;
+ case ASN_OSUBV_ANY:
+ case ASN_OSUBV_STR:
+ canonical_unit_bits = unit_bits = 8;
+/* if(cval->flags & APC_CONSTRAINED)
+ unit_bits = 8;
+*/
+ bpc = OS__BPC_CHAR;
+ sizeinunits = st->size;
+ break;
+ case ASN_OSUBV_U16:
+ canonical_unit_bits = unit_bits = 16;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U16;
+ sizeinunits = st->size / 2;
+ break;
+ case ASN_OSUBV_U32:
+ canonical_unit_bits = unit_bits = 32;
+ if(cval->flags & APC_CONSTRAINED)
+ unit_bits = cval->range_bits;
+ bpc = OS__BPC_U32;
+ sizeinunits = st->size / 4;
+ break;
+ }
+
+ ASN_DEBUG("Encoding %s into %d units of %d bits"
+ " (%ld..%ld, effective %d)%s",
+ td->name, sizeinunits, unit_bits,
+ csiz->lower_bound, csiz->upper_bound,
+ csiz->effective_bits, ct_extensible ? " EXT" : "");
+
+ /* Figure out wheter size lies within PER visible constraint */
+
+ if(csiz->effective_bits >= 0) {
+ if((int)sizeinunits < csiz->lower_bound
+ || (int)sizeinunits > csiz->upper_bound) {
+ if(ct_extensible) {
+ cval = &asn_DEF_OCTET_STRING_constraints.value;
+ csiz = &asn_DEF_OCTET_STRING_constraints.size;
+ unit_bits = canonical_unit_bits;
+ inext = 1;
+ } else
+ ASN__ENCODE_FAILED;
+ }
+ } else {
+ inext = 0;
+ }
+
+
+ if(ct_extensible) {
+ /* Declare whether length is [not] within extension root */
+ if(per_put_few_bits(po, inext, 1))
+ ASN__ENCODE_FAILED;
+ }
+
+ /* X.691, #16.5: zero-length encoding */
+ /* X.691, #16.6: short fixed length encoding (up to 2 octets) */
+ /* X.691, #16.7: long fixed length encoding (up to 64K octets) */
+ if(csiz->effective_bits >= 0) {
+ ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits",
+ st->size, sizeinunits - csiz->lower_bound,
+ csiz->effective_bits);
+ if (csiz->effective_bits > 0) {
+ ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound);
+ if(ret) ASN__ENCODE_FAILED;
+ }
+ if (st->size > 2) { /* X.691 #16 NOTE 1 */
+ if (aper_put_align(po) < 0)
+ ASN__ENCODE_FAILED;
+ }
+ if(bpc) {
+ ret = OCTET_STRING_per_put_characters(po, st->buf,
+ sizeinunits, bpc, unit_bits,
+ cval->lower_bound, cval->upper_bound, pc);
+ } else {
+ ret = per_put_many_bits(po, st->buf,
+ sizeinunits * unit_bits);
+ }
+ if(ret) ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ }
+
+ ASN_DEBUG("Encoding %lu bytes", st->size);
+
+ if(sizeinunits == 0) {
+ if(aper_put_length(po, -1, 0))
+ ASN__ENCODE_FAILED;
+ ASN__ENCODED_OK(er);
+ }
+
+ buf = st->buf;
+ while(sizeinunits) {
+ ssize_t maySave = aper_put_length(po, -1, sizeinunits);
+
+ if(maySave < 0) ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Encoding %ld of %ld",
+ (long)maySave, (long)sizeinunits);
+
+ if(bpc) {
+ ret = OCTET_STRING_per_put_characters(po, buf,
+ maySave, bpc, unit_bits,
+ cval->lower_bound, cval->upper_bound, pc);
+ } else {
+ ret = per_put_many_bits(po, buf, maySave * unit_bits);
+ }
+ if(ret) ASN__ENCODE_FAILED;
+
+ if(bpc)
+ buf += maySave * bpc;
+ else
+ buf += maySave >> 3;
+ sizeinunits -= maySave;
+ assert(!(maySave & 0x07) || !sizeinunits);
+ }
+
+ ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+int
+OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ const char * const h2c = "0123456789ABCDEF";
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ char scratch[16 * 3 + 4];
+ char *p = scratch;
+ uint8_t *buf;
+ uint8_t *end;
+ size_t i;
+
+ (void)td; /* Unused argument */
+
+ if(!st || (!st->buf && st->size))
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+
+ /*
+ * Dump the contents of the buffer in hexadecimal.
+ */
+ buf = st->buf;
+ end = buf + st->size;
+ for(i = 0; buf < end; buf++, i++) {
+ if(!(i % 16) && (i || st->size > 16)) {
+ if(cb(scratch, p - scratch, app_key) < 0)
+ return -1;
+ _i_INDENT(1);
+ p = scratch;
+ }
+ *p++ = h2c[(*buf >> 4) & 0x0F];
+ *p++ = h2c[*buf & 0x0F];
+ *p++ = 0x20;
+ }
+
+ if(p > scratch) {
+ p--; /* Remove the tail space */
+ if(cb(scratch, p - scratch, app_key) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+int
+OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(st && (st->buf || !st->size)) {
+ return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0;
+ } else {
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+void
+OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr,
+ enum asn_struct_free_method method) {
+ OCTET_STRING_t *st = (OCTET_STRING_t *)sptr;
+ const asn_OCTET_STRING_specifics_t *specs;
+ asn_struct_ctx_t *ctx;
+ struct _stack *stck;
+
+ if(!td || !st)
+ return;
+
+ specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+ ASN_DEBUG("Freeing %s as OCTET STRING", td->name);
+
+ if(st->buf) {
+ FREEMEM(st->buf);
+ st->buf = 0;
+ }
+
+ /*
+ * Remove decode-time stack.
+ */
+ stck = (struct _stack *)ctx->ptr;
+ if(stck) {
+ while(stck->tail) {
+ struct _stack_el *sel = stck->tail;
+ stck->tail = sel->prev;
+ FREEMEM(sel);
+ }
+ FREEMEM(stck);
+ }
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(sptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(sptr, 0,
+ td->specifics
+ ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics))
+ ->struct_size
+ : sizeof(OCTET_STRING_t));
+ break;
+ }
+}
+
+/*
+ * Conversion routines.
+ */
+int
+OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) {
+ void *buf;
+
+ if(st == 0 || (str == 0 && len)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /*
+ * Clear the OCTET STRING.
+ */
+ if(str == NULL) {
+ FREEMEM(st->buf);
+ st->buf = 0;
+ st->size = 0;
+ return 0;
+ }
+
+ /* Determine the original string size, if not explicitly given */
+ if(len < 0)
+ len = strlen(str);
+
+ /* Allocate and fill the memory */
+ buf = MALLOC(len + 1);
+ if(buf == NULL)
+ return -1;
+
+ memcpy(buf, str, len);
+ ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */
+ FREEMEM(st->buf);
+ st->buf = (uint8_t *)buf;
+ st->size = len;
+
+ return 0;
+}
+
+OCTET_STRING_t *
+OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str,
+ int len) {
+ const asn_OCTET_STRING_specifics_t *specs =
+ td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ OCTET_STRING_t *st;
+
+ st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size);
+ if(st && str && OCTET_STRING_fromBuf(st, str, len)) {
+ FREEMEM(st);
+ st = NULL;
+ }
+
+ return st;
+}
+
+/*
+ * Lexicographically compare the common prefix of both strings,
+ * and if it is the same return -1 for the smallest string.
+ */
+int
+OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+ const void *bptr) {
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics;
+ const OCTET_STRING_t *a = aptr;
+ const OCTET_STRING_t *b = bptr;
+
+ assert(!specs || specs->subvariant != ASN_OSUBV_BIT);
+
+ if(a && b) {
+ size_t common_prefix_size = a->size <= b->size ? a->size : b->size;
+ int ret = memcmp(a->buf, b->buf, common_prefix_size);
+ if(ret == 0) {
+ /* Figure out which string with equal prefixes is longer. */
+ if(a->size < b->size) {
+ return -1;
+ } else if(a->size > b->size) {
+ return 1;
+ } else {
+ return 0;
+ }
+ } else {
+ return ret < 0 ? -1 : 1;
+ }
+ } else if(!a && !b) {
+ return 0;
+ } else if(!a) {
+ return -1;
+ } else {
+ return 1;
+ }
+
+}
+
+/*
+ * Biased function for randomizing character values around their limits.
+ */
+static uint32_t
+OCTET_STRING__random_char(unsigned long lb, unsigned long ub) {
+ assert(lb <= ub);
+ switch(asn_random_between(0, 16)) {
+ case 0:
+ if(lb < ub) return lb + 1;
+ /* Fall through */
+ case 1:
+ return lb;
+ case 2:
+ if(lb < ub) return ub - 1;
+ /* Fall through */
+ case 3:
+ return ub;
+ default:
+ return asn_random_between(lb, ub);
+ }
+}
+
+
+size_t
+OCTET_STRING_random_length_constrained(
+ const asn_TYPE_descriptor_t *td,
+ const asn_encoding_constraints_t *constraints, size_t max_length) {
+ const unsigned lengths[] = {0, 1, 2, 3, 4, 8,
+ 126, 127, 128, 16383, 16384, 16385,
+ 65534, 65535, 65536, 65537};
+ size_t rnd_len;
+
+ /* Figure out how far we should go */
+ rnd_len = lengths[asn_random_between(
+ 0, sizeof(lengths) / sizeof(lengths[0]) - 1)];
+
+ if(!constraints || !constraints->per_constraints)
+ constraints = &td->encoding_constraints;
+ if(constraints->per_constraints) {
+ const asn_per_constraint_t *pc = &constraints->per_constraints->size;
+ if(pc->flags & APC_CONSTRAINED) {
+ long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length
+ ? pc->upper_bound
+ : (ssize_t)max_length;
+ if(max_length <= (size_t)pc->lower_bound) {
+ return pc->lower_bound;
+ }
+ if(pc->flags & APC_EXTENSIBLE) {
+ switch(asn_random_between(0, 5)) {
+ case 0:
+ if(pc->lower_bound > 0) {
+ rnd_len = pc->lower_bound - 1;
+ break;
+ }
+ /* Fall through */
+ case 1:
+ rnd_len = pc->upper_bound + 1;
+ break;
+ case 2:
+ /* Keep rnd_len from the table */
+ if(rnd_len <= max_length) {
+ break;
+ }
+ /* Fall through */
+ default:
+ rnd_len = asn_random_between(pc->lower_bound,
+ suggested_upper_bound);
+ }
+ } else {
+ rnd_len =
+ asn_random_between(pc->lower_bound, suggested_upper_bound);
+ }
+ } else {
+ rnd_len = asn_random_between(0, max_length);
+ }
+ } else if(rnd_len > max_length) {
+ rnd_len = asn_random_between(0, max_length);
+ }
+
+ return rnd_len;
+}
+
+asn_random_fill_result_t
+OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constraints,
+ size_t max_length) {
+ const asn_OCTET_STRING_specifics_t *specs = td->specifics
+ ? (const asn_OCTET_STRING_specifics_t *)td->specifics
+ : &asn_SPC_OCTET_STRING_specs;
+ asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ unsigned int unit_bytes = 1;
+ unsigned long clb = 0; /* Lower bound on char */
+ unsigned long cub = 255; /* Higher bound on char value */
+ uint8_t *buf;
+ uint8_t *bend;
+ uint8_t *b;
+ size_t rnd_len;
+ OCTET_STRING_t *st;
+
+ if(max_length == 0 && !*sptr) return result_skipped;
+
+ switch(specs->subvariant) {
+ default:
+ case ASN_OSUBV_ANY:
+ return result_failed;
+ case ASN_OSUBV_BIT:
+ /* Handled by BIT_STRING itself. */
+ return result_failed;
+ case ASN_OSUBV_STR:
+ unit_bytes = 1;
+ clb = 0;
+ cub = 255;
+ break;
+ case ASN_OSUBV_U16:
+ unit_bytes = 2;
+ clb = 0;
+ cub = 65535;
+ break;
+ case ASN_OSUBV_U32:
+ unit_bytes = 4;
+ clb = 0;
+ cub = 0x10FFFF;
+ break;
+ }
+
+ if(!constraints || !constraints->per_constraints)
+ constraints = &td->encoding_constraints;
+ if(constraints->per_constraints) {
+ const asn_per_constraint_t *pc = &constraints->per_constraints->value;
+ if(pc->flags & APC_SEMI_CONSTRAINED) {
+ clb = pc->lower_bound;
+ } else if(pc->flags & APC_CONSTRAINED) {
+ clb = pc->lower_bound;
+ cub = pc->upper_bound;
+ }
+ }
+
+ rnd_len =
+ OCTET_STRING_random_length_constrained(td, constraints, max_length);
+
+ buf = CALLOC(unit_bytes, rnd_len + 1);
+ if(!buf) return result_failed;
+
+ bend = &buf[unit_bytes * rnd_len];
+
+ switch(unit_bytes) {
+ case 1:
+ for(b = buf; b < bend; b += unit_bytes) {
+ *(uint8_t *)b = OCTET_STRING__random_char(clb, cub);
+ }
+ *(uint8_t *)b = 0;
+ break;
+ case 2:
+ for(b = buf; b < bend; b += unit_bytes) {
+ uint32_t code = OCTET_STRING__random_char(clb, cub);
+ b[0] = code >> 8;
+ b[1] = code;
+ }
+ *(uint16_t *)b = 0;
+ break;
+ case 4:
+ for(b = buf; b < bend; b += unit_bytes) {
+ uint32_t code = OCTET_STRING__random_char(clb, cub);
+ b[0] = code >> 24;
+ b[1] = code >> 16;
+ b[2] = code >> 8;
+ b[3] = code;
+ }
+ *(uint32_t *)b = 0;
+ break;
+ }
+
+ if(*sptr) {
+ st = *sptr;
+ FREEMEM(st->buf);
+ } else {
+ st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size));
+ if(!st) {
+ FREEMEM(buf);
+ return result_failed;
+ }
+ }
+
+ st->buf = buf;
+ st->size = unit_bytes * rnd_len;
+
+ result_ok.length = st->size;
+ return result_ok;
+}
diff --git a/src/asn/asn1c/OCTET_STRING.h b/src/asn/asn1c/OCTET_STRING.h
new file mode 100644
index 0000000..c2f8bae
--- /dev/null
+++ b/src/asn/asn1c/OCTET_STRING.h
@@ -0,0 +1,102 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _OCTET_STRING_H_
+#define _OCTET_STRING_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct OCTET_STRING {
+ uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */
+ size_t size; /* Size of the buffer */
+
+ asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */
+} OCTET_STRING_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING;
+extern asn_TYPE_operation_t asn_OP_OCTET_STRING;
+
+asn_struct_free_f OCTET_STRING_free;
+asn_struct_print_f OCTET_STRING_print;
+asn_struct_print_f OCTET_STRING_print_utf8;
+asn_struct_compare_f OCTET_STRING_compare;
+ber_type_decoder_f OCTET_STRING_decode_ber;
+der_type_encoder_f OCTET_STRING_encode_der;
+xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */
+xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */
+xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */
+xer_type_encoder_f OCTET_STRING_encode_xer;
+xer_type_encoder_f OCTET_STRING_encode_xer_utf8;
+oer_type_decoder_f OCTET_STRING_decode_oer;
+oer_type_encoder_f OCTET_STRING_encode_oer;
+per_type_decoder_f OCTET_STRING_decode_uper;
+per_type_encoder_f OCTET_STRING_encode_uper;
+per_type_decoder_f OCTET_STRING_decode_aper;
+per_type_encoder_f OCTET_STRING_encode_aper;
+asn_random_fill_f OCTET_STRING_random_fill;
+
+#define OCTET_STRING_constraint asn_generic_no_constraint
+#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex
+
+/******************************
+ * Handy conversion routines. *
+ ******************************/
+
+/*
+ * This function clears the previous value of the OCTET STRING (if any)
+ * and then allocates a new memory with the specified content (str/size).
+ * If size = -1, the size of the original string will be determined
+ * using strlen(str).
+ * If str equals to NULL, the function will silently clear the
+ * current contents of the OCTET STRING.
+ * Returns 0 if it was possible to perform operation, -1 otherwise.
+ */
+int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size);
+
+/* Handy conversion from the C string into the OCTET STRING. */
+#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1)
+
+/*
+ * Allocate and fill the new OCTET STRING and return a pointer to the newly
+ * allocated object. NULL is permitted in str: the function will just allocate
+ * empty OCTET STRING.
+ */
+OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td,
+ const char *str, int size);
+
+/****************************
+ * Internally useful stuff. *
+ ****************************/
+
+typedef struct asn_OCTET_STRING_specifics_s {
+ /*
+ * Target structure description.
+ */
+ unsigned struct_size; /* Size of the structure */
+ unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */
+
+ enum asn_OS_Subvariant {
+ ASN_OSUBV_ANY, /* The open type (ANY) */
+ ASN_OSUBV_BIT, /* BIT STRING */
+ ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */
+ ASN_OSUBV_U16, /* 16-bit character (BMPString) */
+ ASN_OSUBV_U32 /* 32-bit character (UniversalString) */
+ } subvariant;
+} asn_OCTET_STRING_specifics_t;
+
+extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs;
+
+size_t OCTET_STRING_random_length_constrained(
+ const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *,
+ size_t max_length);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OCTET_STRING_H_ */
diff --git a/src/asn/asn1c/OPEN_TYPE.c b/src/asn/asn1c/OPEN_TYPE.c
new file mode 100644
index 0000000..fd25b69
--- /dev/null
+++ b/src/asn/asn1c/OPEN_TYPE.c
@@ -0,0 +1,509 @@
+/*
+ * 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;
+ 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;
+ 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/src/asn/asn1c/OPEN_TYPE.h b/src/asn/asn1c/OPEN_TYPE.h
new file mode 100644
index 0000000..b0d023c
--- /dev/null
+++ b/src/asn/asn1c/OPEN_TYPE.h
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2017-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_OPEN_TYPE_H
+#define ASN_OPEN_TYPE_H
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OPEN_TYPE_free CHOICE_free
+#define OPEN_TYPE_print CHOICE_print
+#define OPEN_TYPE_compare CHOICE_compare
+#define OPEN_TYPE_constraint CHOICE_constraint
+#define OPEN_TYPE_decode_ber NULL
+#define OPEN_TYPE_encode_der CHOICE_encode_der
+#define OPEN_TYPE_decode_xer NULL
+#define OPEN_TYPE_encode_xer CHOICE_encode_xer
+#define OPEN_TYPE_decode_oer NULL
+#define OPEN_TYPE_encode_oer CHOICE_encode_oer
+#define OPEN_TYPE_decode_uper NULL
+#define OPEN_TYPE_decode_aper NULL
+
+extern asn_TYPE_operation_t asn_OP_OPEN_TYPE;
+
+/*
+ * Decode an Open Type which is potentially constraiend
+ * by the other members of the parent structure.
+ */
+asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *parent_type,
+ void *parent_structure,
+ const asn_TYPE_member_t *element,
+ const void *ptr, size_t size);
+
+asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *parent_type,
+ void *parent_structure,
+ const asn_TYPE_member_t *element,
+ const void *ptr, size_t size);
+
+asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *parent_type,
+ void *parent_structure,
+ asn_TYPE_member_t *element, const void *ptr,
+ size_t size);
+
+asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *parent_type,
+ void *parent_structure,
+ const asn_TYPE_member_t *element,
+ asn_per_data_t *pd);
+
+asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *parent_type,
+ void *parent_structure,
+ const asn_TYPE_member_t *element,
+ asn_per_data_t *pd);
+
+asn_enc_rval_t OPEN_TYPE_encode_uper(
+ const asn_TYPE_descriptor_t *type_descriptor,
+ const asn_per_constraints_t *constraints, const void *struct_ptr,
+ asn_per_outp_t *per_output);
+
+asn_enc_rval_t OPEN_TYPE_encode_aper(
+ const asn_TYPE_descriptor_t *type_descriptor,
+ const asn_per_constraints_t *constraints, const void *struct_ptr,
+ asn_per_outp_t *per_output);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_OPEN_TYPE_H */
diff --git a/src/asn/asn1c/PrintableString.c b/src/asn/asn1c/PrintableString.c
new file mode 100644
index 0000000..8fc3939
--- /dev/null
+++ b/src/asn/asn1c/PrintableString.c
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 2003, 2004, 2006 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+
+/*
+ * ASN.1:1984 (X.409)
+ */
+static const int _PrintableString_alphabet[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */
+};
+static const int _PrintableString_code2value[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122};
+
+/*
+ * PrintableString basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */
+};
+static int asn_DEF_PrintableString_v2c(unsigned int value) {
+ return _PrintableString_alphabet[value > 255 ? 0 : value] - 1;
+}
+static int asn_DEF_PrintableString_c2v(unsigned int code) {
+ if(code < 74)
+ return _PrintableString_code2value[code];
+ return -1;
+}
+static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = {
+ { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */
+ asn_DEF_PrintableString_v2c,
+ asn_DEF_PrintableString_c2v
+};
+asn_TYPE_operation_t asn_OP_PrintableString = {
+ OCTET_STRING_free,
+ OCTET_STRING_print_utf8, /* ASCII subset */
+ OCTET_STRING_compare,
+ OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */
+ OCTET_STRING_encode_der,
+ OCTET_STRING_decode_xer_utf8,
+ OCTET_STRING_encode_xer_utf8,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ OCTET_STRING_decode_oer,
+ OCTET_STRING_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ OCTET_STRING_decode_uper,
+ OCTET_STRING_encode_uper,
+ OCTET_STRING_decode_aper,
+ OCTET_STRING_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ OCTET_STRING_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_PrintableString = {
+ "PrintableString",
+ "PrintableString",
+ &asn_OP_PrintableString,
+ asn_DEF_PrintableString_tags,
+ sizeof(asn_DEF_PrintableString_tags)
+ / sizeof(asn_DEF_PrintableString_tags[0]) - 1,
+ asn_DEF_PrintableString_tags,
+ sizeof(asn_DEF_PrintableString_tags)
+ / sizeof(asn_DEF_PrintableString_tags[0]),
+ { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+
+int
+PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb,
+ void *app_key) {
+ const PrintableString_t *st = (const PrintableString_t *)sptr;
+
+ if(st && st->buf) {
+ uint8_t *buf = st->buf;
+ uint8_t *end = buf + st->size;
+
+ /*
+ * Check the alphabet of the PrintableString.
+ * ASN.1:1984 (X.409)
+ */
+ for(; buf < end; buf++) {
+ if(!_PrintableString_alphabet[*buf]) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value byte %ld (%d) "
+ "not in PrintableString alphabet "
+ "(%s:%d)",
+ td->name,
+ (long)((buf - st->buf) + 1),
+ *buf,
+ __FILE__, __LINE__);
+ return -1;
+ }
+ }
+ } else {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/src/asn/asn1c/PrintableString.h b/src/asn/asn1c/PrintableString.h
new file mode 100644
index 0000000..8c2b61a
--- /dev/null
+++ b/src/asn/asn1c/PrintableString.h
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _PrintableString_H_
+#define _PrintableString_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_PrintableString;
+extern asn_TYPE_operation_t asn_OP_PrintableString;
+
+asn_constr_check_f PrintableString_constraint;
+
+#define PrintableString_free OCTET_STRING_free
+#define PrintableString_print OCTET_STRING_print_utf8
+#define PrintableString_compare OCTET_STRING_compare
+#define PrintableString_decode_ber OCTET_STRING_decode_ber
+#define PrintableString_encode_der OCTET_STRING_encode_der
+#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8
+#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8
+#define PrintableString_decode_uper OCTET_STRING_decode_uper
+#define PrintableString_encode_uper OCTET_STRING_encode_uper
+#define PrintableString_decode_aper OCTET_STRING_decode_aper
+#define PrintableString_encode_aper OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PrintableString_H_ */
diff --git a/src/asn/asn1c/UTF8String.c b/src/asn/asn1c/UTF8String.c
new file mode 100644
index 0000000..c023ca1
--- /dev/null
+++ b/src/asn/asn1c/UTF8String.c
@@ -0,0 +1,294 @@
+/*-
+ * Copyright (c) 2003, 2004, 2006 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+
+/*
+ * UTF8String basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_UTF8String_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), /* [UNIVERSAL 12] IMPLICIT ...*/
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), /* ... OCTET STRING */
+};
+asn_TYPE_operation_t asn_OP_UTF8String = {
+ OCTET_STRING_free,
+ UTF8String_print,
+ 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 */
+ UTF8String_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_UTF8String = {
+ "UTF8String",
+ "UTF8String",
+ &asn_OP_UTF8String,
+ asn_DEF_UTF8String_tags,
+ sizeof(asn_DEF_UTF8String_tags)
+ / sizeof(asn_DEF_UTF8String_tags[0]) - 1,
+ asn_DEF_UTF8String_tags,
+ sizeof(asn_DEF_UTF8String_tags)
+ / sizeof(asn_DEF_UTF8String_tags[0]),
+ { 0, 0, UTF8String_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+/*
+ * This is the table of length expectations.
+ * The second half of this table is only applicable to the long sequences.
+ */
+static const int UTF8String_ht[2][16] = {
+ { /* 0x0 ... 0x7 */
+ /* 0000..0111 */
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ /* 1000..1011(0), 1100..1101(2), 1110(3), 1111(-1) */
+ 0, 0, 0, 0, 2, 2, 3, -1 },
+ { /* 0xF0 .. 0xF7 */
+ /* 11110000..11110111 */
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 5, 5, 5, 6, 6, -1, -1 }
+};
+static const int32_t UTF8String_mv[7] = { 0, 0,
+ 0x00000080,
+ 0x00000800,
+ 0x00010000,
+ 0x00200000,
+ 0x04000000
+};
+
+/* Internal aliases for return codes */
+#define U8E_TRUNC -1 /* UTF-8 sequence truncated */
+#define U8E_ILLSTART -2 /* Illegal UTF-8 sequence start */
+#define U8E_NOTCONT -3 /* Continuation expectation failed */
+#define U8E_NOTMIN -4 /* Not minimal length encoding */
+#define U8E_EINVAL -5 /* Invalid arguments */
+
+int
+UTF8String_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ ssize_t len = UTF8String_length((const UTF8String_t *)sptr);
+ switch(len) {
+ case U8E_EINVAL:
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given", td->name);
+ break;
+ case U8E_TRUNC:
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: truncated UTF-8 sequence (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ break;
+ case U8E_ILLSTART:
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: UTF-8 illegal start of encoding (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ break;
+ case U8E_NOTCONT:
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: UTF-8 not continuation (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ break;
+ case U8E_NOTMIN:
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: UTF-8 not minimal sequence (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ break;
+ }
+ return (len < 0) ? -1 : 0;
+}
+
+static ssize_t
+UTF8String__process(const UTF8String_t *st, uint32_t *dst, size_t dstlen) {
+ size_t length;
+ uint8_t *buf = st->buf;
+ uint8_t *end = buf + st->size;
+ uint32_t *dstend = dst + dstlen;
+
+ for(length = 0; buf < end; length++) {
+ int ch = *buf;
+ uint8_t *cend;
+ int32_t value;
+ int want;
+
+ /* Compute the sequence length */
+ want = UTF8String_ht[0][ch >> 4];
+ switch(want) {
+ case -1:
+ /* Second half of the table, long sequence */
+ want = UTF8String_ht[1][ch & 0x0F];
+ if(want != -1) break;
+ /* Fall through */
+ case 0:
+ return U8E_ILLSTART;
+ }
+
+ /* assert(want >= 1 && want <= 6) */
+
+ /* Check character sequence length */
+ if(buf + want > end) return U8E_TRUNC;
+
+ value = ch & (0xff >> want);
+ cend = buf + want;
+ for(buf++; buf < cend; buf++) {
+ ch = *buf;
+ if(ch < 0x80 || ch > 0xbf) return U8E_NOTCONT;
+ value = (value << 6) | (ch & 0x3F);
+ }
+ if(value < UTF8String_mv[want])
+ return U8E_NOTMIN;
+ if(dst < dstend)
+ *dst++ = value; /* Record value */
+ }
+
+ if(dst < dstend) *dst = 0; /* zero-terminate */
+
+ return length;
+}
+
+
+ssize_t
+UTF8String_length(const UTF8String_t *st) {
+ if(st && st->buf) {
+ return UTF8String__process(st, 0, 0);
+ } else {
+ return U8E_EINVAL;
+ }
+}
+
+size_t
+UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen) {
+ if(st && st->buf) {
+ ssize_t ret = UTF8String__process(st, dst, dstlen);
+ return (ret < 0) ? 0 : ret;
+ } else {
+ return 0;
+ }
+}
+
+int
+UTF8String_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const UTF8String_t *st = (const UTF8String_t *)sptr;
+
+ (void)td; /* Unused argument */
+ (void)ilevel; /* Unused argument */
+
+ if(st && st->buf) {
+ return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0;
+ } else {
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+
+/*
+ * Biased function for randomizing UTF-8 sequences.
+ */
+static size_t
+UTF8String__random_char(uint8_t *b, size_t size) {
+ static const struct rnd_value {
+ const char *value;
+ size_t size;
+ } values[] = {{"\0", 1},
+ {"\x01", 1},
+ {"\x7f", 1},
+ {"\xc2\xa2", 2},
+ {"\xe2\x82\xac", 3},
+ {"\xf0\x90\x8d\x88", 4},
+ {"\xf4\x8f\xbf\xbf", 4}};
+
+ const struct rnd_value *v;
+ size_t max_idx = 0;
+
+ switch(size) {
+ case 0:
+ assert(size != 0);
+ return 0;
+ case 1:
+ max_idx = 2;
+ break;
+ case 2:
+ max_idx = 3;
+ break;
+ default:
+ case 4:
+ max_idx = sizeof(values) / sizeof(values[0]) - 1;
+ break;
+ }
+
+ v = &values[asn_random_between(0, max_idx)];
+ memcpy(b, v->value, v->size);
+ return v->size;
+}
+
+asn_random_fill_result_t
+UTF8String_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};
+ uint8_t *buf;
+ uint8_t *bend;
+ uint8_t *b;
+ size_t rnd_len;
+ size_t idx;
+ UTF8String_t *st;
+
+ if(max_length == 0 && !*sptr) return result_skipped;
+
+ /* Figure out how far we should go */
+ rnd_len = OCTET_STRING_random_length_constrained(td, constraints,
+ max_length / 4);
+
+ buf = CALLOC(4, rnd_len + 1);
+ if(!buf) return result_failed;
+
+ bend = &buf[4 * rnd_len];
+
+ for(b = buf, idx = 0; idx < rnd_len; idx++) {
+ b += UTF8String__random_char(b, (bend - b));
+ }
+ *(uint8_t *)b = 0;
+
+ if(*sptr) {
+ st = *sptr;
+ FREEMEM(st->buf);
+ } else {
+ st = (OCTET_STRING_t *)(*sptr = CALLOC(1, sizeof(UTF8String_t)));
+ if(!st) {
+ FREEMEM(buf);
+ return result_failed;
+ }
+ }
+
+ st->buf = buf;
+ st->size = b - buf;
+
+ assert(UTF8String_length(st) == (ssize_t)rnd_len);
+
+ return result_ok;
+}
diff --git a/src/asn/asn1c/UTF8String.h b/src/asn/asn1c/UTF8String.h
new file mode 100644
index 0000000..7ad9c82
--- /dev/null
+++ b/src/asn/asn1c/UTF8String.h
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _UTF8String_H_
+#define _UTF8String_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t UTF8String_t; /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_UTF8String;
+extern asn_TYPE_operation_t asn_OP_UTF8String;
+
+asn_struct_print_f UTF8String_print;
+asn_constr_check_f UTF8String_constraint;
+asn_random_fill_f UTF8String_random_fill;
+
+#define UTF8String_free OCTET_STRING_free
+#define UTF8String_compare OCTET_STRING_compare
+#define UTF8String_constraint UTF8String_constraint
+#define UTF8String_decode_ber OCTET_STRING_decode_ber
+#define UTF8String_encode_der OCTET_STRING_encode_der
+#define UTF8String_decode_xer OCTET_STRING_decode_xer_utf8
+#define UTF8String_encode_xer OCTET_STRING_encode_xer_utf8
+#define UTF8String_decode_uper OCTET_STRING_decode_uper
+#define UTF8String_encode_uper OCTET_STRING_encode_uper
+#define UTF8String_decode_aper OCTET_STRING_decode_aper
+#define UTF8String_encode_aper OCTET_STRING_encode_aper
+
+/*
+ * Returns length of the given UTF-8 string in characters,
+ * or a negative error code:
+ * -1: UTF-8 sequence truncated
+ * -2: Illegal UTF-8 sequence start
+ * -3: Continuation expectation failed
+ * -4: Not minimal length encoding
+ * -5: Invalid arguments
+ */
+ssize_t UTF8String_length(const UTF8String_t *st);
+
+/*
+ * Convert the UTF-8 string into a sequence of wide characters.
+ * Returns the number of characters necessary.
+ * Returned value might be greater than dstlen.
+ * In case of conversion error, 0 is returned.
+ *
+ * If st points to a valid UTF-8 string, calling
+ * UTF8String_to_wcs(st, 0, 0);
+ * is equivalent to
+ * UTF8String_length(const UTF8String_t *st);
+ */
+size_t UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UTF8String_H_ */
diff --git a/src/asn/asn1c/VisibleString.c b/src/asn/asn1c/VisibleString.c
new file mode 100644
index 0000000..03fef8b
--- /dev/null
+++ b/src/asn/asn1c/VisibleString.c
@@ -0,0 +1,99 @@
+/*-
+ * Copyright (c) 2003, 2006 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+
+/*
+ * VisibleString basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_VisibleString_tags[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)), /* [UNIVERSAL 26] IMPLICIT ...*/
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */
+};
+static asn_per_constraints_t asn_DEF_VisibleString_constraints = {
+ { APC_CONSTRAINED, 7, 7, 0x20, 0x7e }, /* Value */
+ { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */
+ 0, 0
+};
+asn_TYPE_operation_t asn_OP_VisibleString = {
+ 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_VisibleString = {
+ "VisibleString",
+ "VisibleString",
+ &asn_OP_VisibleString,
+ asn_DEF_VisibleString_tags,
+ sizeof(asn_DEF_VisibleString_tags)
+ / sizeof(asn_DEF_VisibleString_tags[0]) - 1,
+ asn_DEF_VisibleString_tags,
+ sizeof(asn_DEF_VisibleString_tags)
+ / sizeof(asn_DEF_VisibleString_tags[0]),
+ { 0, &asn_DEF_VisibleString_constraints, VisibleString_constraint },
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
+int
+VisibleString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const VisibleString_t *st = (const VisibleString_t *)sptr;
+
+ if(st && st->buf) {
+ uint8_t *buf = st->buf;
+ uint8_t *end = buf + st->size;
+
+ /*
+ * Check the alphabet of the VisibleString.
+ * ISO646, ISOReg#6
+ * The alphabet is a subset of ASCII between the space
+ * and "~" (tilde).
+ */
+ for(; buf < end; buf++) {
+ if(*buf < 0x20 || *buf > 0x7e) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value byte %ld (%d) "
+ "not in VisibleString 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/src/asn/asn1c/VisibleString.h b/src/asn/asn1c/VisibleString.h
new file mode 100644
index 0000000..ad5f713
--- /dev/null
+++ b/src/asn/asn1c/VisibleString.h
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _VisibleString_H_
+#define _VisibleString_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef OCTET_STRING_t VisibleString_t; /* Implemented via OCTET STRING */
+
+extern asn_TYPE_descriptor_t asn_DEF_VisibleString;
+extern asn_TYPE_operation_t asn_OP_VisibleString;
+
+asn_constr_check_f VisibleString_constraint;
+
+#define VisibleString_free OCTET_STRING_free
+#define VisibleString_print OCTET_STRING_print
+#define VisibleString_compare OCTET_STRING_compare
+#define VisibleString_constraint VisibleString_constraint
+#define VisibleString_decode_ber OCTET_STRING_decode_ber
+#define VisibleString_encode_der OCTET_STRING_encode_der
+#define VisibleString_decode_xer OCTET_STRING_decode_xer_hex
+#define VisibleString_encode_xer OCTET_STRING_encode_xer
+#define VisibleString_decode_uper OCTET_STRING_decode_uper
+#define VisibleString_encode_uper OCTET_STRING_encode_uper
+#define VisibleString_decode_aper OCTET_STRING_decode_aper
+#define VisibleString_encode_aper OCTET_STRING_encode_aper
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VisibleString_H_ */
diff --git a/src/asn/asn1c/asn_SEQUENCE_OF.c b/src/asn/asn1c/asn_SEQUENCE_OF.c
new file mode 100644
index 0000000..ec952fc
--- /dev/null
+++ b/src/asn/asn1c/asn_SEQUENCE_OF.c
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+
+typedef A_SEQUENCE_OF(void) asn_sequence;
+
+void
+asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) {
+ asn_sequence *as = (asn_sequence *)asn_sequence_of_x;
+
+ if(as) {
+ void *ptr;
+ int n;
+
+ if(number < 0 || number >= as->count)
+ return; /* Nothing to delete */
+
+ if(_do_free && as->free) {
+ ptr = as->array[number];
+ } else {
+ ptr = 0;
+ }
+
+ /*
+ * Shift all elements to the left to hide the gap.
+ */
+ --as->count;
+ for(n = number; n < as->count; n++)
+ as->array[n] = as->array[n+1];
+
+ /*
+ * Invoke the third-party function only when the state
+ * of the parent structure is consistent.
+ */
+ if(ptr) as->free(ptr);
+ }
+}
+
diff --git a/src/asn/asn1c/asn_SEQUENCE_OF.h b/src/asn/asn1c/asn_SEQUENCE_OF.h
new file mode 100644
index 0000000..e35bc44
--- /dev/null
+++ b/src/asn/asn1c/asn_SEQUENCE_OF.h
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_SEQUENCE_OF_H
+#define ASN_SEQUENCE_OF_H
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * SEQUENCE OF is the same as SET OF with a tiny difference:
+ * the delete operation preserves the initial order of elements
+ * and thus MAY operate in non-constant time.
+ */
+#define A_SEQUENCE_OF(type) A_SET_OF(type)
+
+#define ASN_SEQUENCE_ADD(headptr, ptr) \
+ asn_sequence_add((headptr), (ptr))
+
+/***********************************************
+ * Implementation of the SEQUENCE OF structure.
+ */
+
+#define asn_sequence_add asn_set_add
+#define asn_sequence_empty asn_set_empty
+
+/*
+ * Delete the element from the set by its number (base 0).
+ * This is NOT a constant-time operation.
+ * The order of elements is preserved.
+ * If _do_free is given AND the (*free) is initialized, the element
+ * will be freed using the custom (*free) function as well.
+ */
+void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free);
+
+/*
+ * Cope with different conversions requirements to/from void in C and C++.
+ * This is mostly useful for support library.
+ */
+typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_;
+#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr))
+#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_SEQUENCE_OF_H */
diff --git a/src/asn/asn1c/asn_SET_OF.c b/src/asn/asn1c/asn_SET_OF.c
new file mode 100644
index 0000000..944f2cb
--- /dev/null
+++ b/src/asn/asn1c/asn_SET_OF.c
@@ -0,0 +1,88 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * Add another element into the set.
+ */
+int
+asn_set_add(void *asn_set_of_x, void *ptr) {
+ asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x);
+
+ if(as == 0 || ptr == 0) {
+ errno = EINVAL; /* Invalid arguments */
+ return -1;
+ }
+
+ /*
+ * Make sure there's enough space to insert an element.
+ */
+ if(as->count == as->size) {
+ int _newsize = as->size ? (as->size << 1) : 4;
+ void *_new_arr;
+ _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0]));
+ if(_new_arr) {
+ as->array = (void **)_new_arr;
+ as->size = _newsize;
+ } else {
+ /* ENOMEM */
+ return -1;
+ }
+ }
+
+ as->array[as->count++] = ptr;
+
+ return 0;
+}
+
+void
+asn_set_del(void *asn_set_of_x, int number, int _do_free) {
+ asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x);
+
+ if(as) {
+ void *ptr;
+ if(number < 0 || number >= as->count)
+ return;
+
+ if(_do_free && as->free) {
+ ptr = as->array[number];
+ } else {
+ ptr = 0;
+ }
+
+ as->array[number] = as->array[--as->count];
+
+ /*
+ * Invoke the third-party function only when the state
+ * of the parent structure is consistent.
+ */
+ if(ptr) as->free(ptr);
+ }
+}
+
+/*
+ * Free the contents of the set, do not free the set itself.
+ */
+void
+asn_set_empty(void *asn_set_of_x) {
+ asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x);
+
+ if(as) {
+ if(as->array) {
+ if(as->free) {
+ while(as->count--)
+ as->free(as->array[as->count]);
+ }
+ FREEMEM(as->array);
+ as->array = 0;
+ }
+ as->count = 0;
+ as->size = 0;
+ }
+
+}
+
diff --git a/src/asn/asn1c/asn_SET_OF.h b/src/asn/asn1c/asn_SET_OF.h
new file mode 100644
index 0000000..882e1a4
--- /dev/null
+++ b/src/asn/asn1c/asn_SET_OF.h
@@ -0,0 +1,72 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_SET_OF_H
+#define ASN_SET_OF_H
+
+#ifdef __cplusplus
+#define A_SET_OF(type) \
+ struct { \
+ type **array; \
+ int count; /* Meaningful size */ \
+ int size; /* Allocated size */ \
+ void (*free)(decltype(*array)); \
+ }
+#else /* C */
+#define A_SET_OF(type) \
+ struct { \
+ type **array; \
+ int count; /* Meaningful size */ \
+ int size; /* Allocated size */ \
+ void (*free)(type *); \
+ }
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ASN_SET_ADD(headptr, ptr) \
+ asn_set_add((headptr), (ptr))
+
+/*******************************************
+ * Implementation of the SET OF structure.
+ */
+
+/*
+ * Add another structure into the set by its pointer.
+ * RETURN VALUES:
+ * 0 for success and -1/errno for failure.
+ */
+int asn_set_add(void *asn_set_of_x, void *ptr);
+
+/*
+ * Delete the element from the set by its number (base 0).
+ * This is a constant-time operation. The order of elements before the
+ * deleted ones is guaranteed, the order of elements after the deleted
+ * one is NOT guaranteed.
+ * If _do_free is given AND the (*free) is initialized, the element
+ * will be freed using the custom (*free) function as well.
+ */
+void asn_set_del(void *asn_set_of_x, int number, int _do_free);
+
+/*
+ * Empty the contents of the set. Will free the elements, if (*free) is given.
+ * Will NOT free the set itself.
+ */
+void asn_set_empty(void *asn_set_of_x);
+
+/*
+ * Cope with different conversions requirements to/from void in C and C++.
+ * This is mostly useful for support library.
+ */
+typedef A_SET_OF(void) asn_anonymous_set_;
+#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr))
+#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_SET_OF_H */
diff --git a/src/asn/asn1c/asn_application.c b/src/asn/asn1c/asn_application.c
new file mode 100644
index 0000000..a55e14e
--- /dev/null
+++ b/src/asn/asn1c/asn_application.c
@@ -0,0 +1,481 @@
+/*
+ * Copyright (c) 2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx,
+ enum asn_transfer_syntax syntax,
+ const asn_TYPE_descriptor_t *td,
+ const void *sptr,
+ asn_app_consume_bytes_f *callback,
+ void *callback_key);
+
+
+struct callback_count_bytes_key {
+ asn_app_consume_bytes_f *callback;
+ void *callback_key;
+ size_t computed_size;
+};
+
+/*
+ * Encoder which just counts bytes that come through it.
+ */
+static int
+callback_count_bytes_cb(const void *data, size_t size, void *keyp) {
+ struct callback_count_bytes_key *key = keyp;
+ int ret;
+
+ ret = key->callback(data, size, key->callback_key);
+ if(ret >= 0) {
+ key->computed_size += size;
+ }
+
+ return ret;
+}
+
+struct overrun_encoder_key {
+ void *buffer;
+ size_t buffer_size;
+ size_t computed_size;
+};
+
+struct dynamic_encoder_key {
+ void *buffer;
+ size_t buffer_size;
+ size_t computed_size;
+};
+
+struct callback_failure_catch_key {
+ asn_app_consume_bytes_f *callback;
+ void *callback_key;
+ int callback_failed;
+};
+
+/*
+ * Encoder which doesn't stop counting bytes
+ * even if it reaches the end of the buffer.
+ */
+static int
+overrun_encoder_cb(const void *data, size_t size, void *keyp) {
+ struct overrun_encoder_key *key = keyp;
+
+ if(key->computed_size + size > key->buffer_size) {
+ /*
+ * Avoid accident on the next call:
+ * stop adding bytes to the buffer.
+ */
+ key->buffer_size = 0;
+ } else {
+ memcpy((char *)key->buffer + key->computed_size, data, size);
+ }
+ key->computed_size += size;
+
+ return 0;
+}
+
+/*
+ * Encoder which dynamically allocates output, and continues
+ * to count even if allocation failed.
+ */
+static int
+dynamic_encoder_cb(const void *data, size_t size, void *keyp) {
+ struct dynamic_encoder_key *key = keyp;
+
+ if(key->buffer) {
+ if(key->computed_size + size >= key->buffer_size) {
+ void *p;
+ size_t new_size = key->buffer_size;
+
+ do {
+ new_size *= 2;
+ } while(new_size <= key->computed_size + size);
+
+ p = REALLOC(key->buffer, new_size);
+ if(p) {
+ key->buffer = p;
+ key->buffer_size = new_size;
+ } else {
+ FREEMEM(key->buffer);
+ key->buffer = 0;
+ key->buffer_size = 0;
+ key->computed_size += size;
+ return 0;
+ }
+ }
+ memcpy((char *)key->buffer + key->computed_size, data, size);
+ }
+
+ key->computed_size += size;
+
+ return 0;
+}
+
+/*
+ * Encoder which help convert the application level encoder failure into EIO.
+ */
+static int
+callback_failure_catch_cb(const void *data, size_t size, void *keyp) {
+ struct callback_failure_catch_key *key = keyp;
+ int ret;
+
+ ret = key->callback(data, size, key->callback_key);
+ if(ret < 0) {
+ key->callback_failed = 1;
+ }
+
+ return ret;
+}
+
+asn_enc_rval_t
+asn_encode(const asn_codec_ctx_t *opt_codec_ctx,
+ enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td,
+ const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) {
+ struct callback_failure_catch_key cb_key;
+ asn_enc_rval_t er;
+
+ if(!callback) {
+ errno = EINVAL;
+ ASN__ENCODE_FAILED;
+ }
+
+ cb_key.callback = callback;
+ cb_key.callback_key = callback_key;
+ cb_key.callback_failed = 0;
+
+ er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr,
+ callback_failure_catch_cb, &cb_key);
+ if(cb_key.callback_failed) {
+ assert(er.encoded == -1);
+ assert(errno == EBADF);
+ errno = EIO;
+ }
+
+ return er;
+}
+
+asn_enc_rval_t
+asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx,
+ enum asn_transfer_syntax syntax,
+ const asn_TYPE_descriptor_t *td, const void *sptr,
+ void *buffer, size_t buffer_size) {
+ struct overrun_encoder_key buf_key;
+ asn_enc_rval_t er;
+
+ if(buffer_size > 0 && !buffer) {
+ errno = EINVAL;
+ ASN__ENCODE_FAILED;
+ }
+
+ buf_key.buffer = buffer;
+ buf_key.buffer_size = buffer_size;
+ buf_key.computed_size = 0;
+
+ er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr,
+ overrun_encoder_cb, &buf_key);
+
+ if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) {
+ ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE
+ " yet produced %" ASN_PRI_SIZE " bytes",
+ er.encoded, buf_key.computed_size);
+ assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size);
+ }
+
+ return er;
+}
+
+asn_encode_to_new_buffer_result_t
+asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx,
+ enum asn_transfer_syntax syntax,
+ const asn_TYPE_descriptor_t *td, const void *sptr) {
+ struct dynamic_encoder_key buf_key;
+ asn_encode_to_new_buffer_result_t res;
+
+ buf_key.buffer_size = 16;
+ buf_key.buffer = MALLOC(buf_key.buffer_size);
+ buf_key.computed_size = 0;
+
+ res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr,
+ dynamic_encoder_cb, &buf_key);
+
+ if(res.result.encoded >= 0
+ && (size_t)res.result.encoded != buf_key.computed_size) {
+ ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE
+ " yet produced %" ASN_PRI_SIZE " bytes",
+ res.result.encoded, buf_key.computed_size);
+ assert(res.result.encoded < 0
+ || (size_t)res.result.encoded == buf_key.computed_size);
+ }
+
+ res.buffer = buf_key.buffer;
+
+ /* 0-terminate just in case. */
+ if(res.buffer) {
+ assert(buf_key.computed_size < buf_key.buffer_size);
+ ((char *)res.buffer)[buf_key.computed_size] = '\0';
+ }
+
+ return res;
+}
+
+static asn_enc_rval_t
+asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx,
+ enum asn_transfer_syntax syntax,
+ const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_consume_bytes_f *callback, void *callback_key) {
+ asn_enc_rval_t er;
+ enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL;
+
+ (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */
+
+ if(!td || !sptr) {
+ errno = EINVAL;
+ ASN__ENCODE_FAILED;
+ }
+
+ switch(syntax) {
+ case ATS_NONSTANDARD_PLAINTEXT:
+ if(td->op->print_struct) {
+ struct callback_count_bytes_key cb_key;
+ cb_key.callback = callback;
+ cb_key.callback_key = callback_key;
+ cb_key.computed_size = 0;
+ if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb,
+ &cb_key)
+ < 0
+ || callback_count_bytes_cb("\n", 1, &cb_key) < 0) {
+ errno = EBADF; /* Structure has incorrect form. */
+ er.encoded = -1;
+ er.failed_type = td;
+ er.structure_ptr = sptr;
+ } else {
+ er.encoded = cb_key.computed_size;
+ er.failed_type = 0;
+ er.structure_ptr = 0;
+ }
+ } else {
+ errno = ENOENT; /* Transfer syntax is not defined for this type. */
+ ASN__ENCODE_FAILED;
+ }
+ break;
+
+ case ATS_RANDOM:
+ errno = ENOENT; /* Randomization doesn't make sense on output. */
+ ASN__ENCODE_FAILED;
+
+ case ATS_BER:
+ /* BER is a superset of DER. */
+ /* Fall through. */
+ case ATS_DER:
+ if(td->op->der_encoder) {
+ er = der_encode(td, sptr, callback, callback_key);
+ if(er.encoded == -1) {
+ if(er.failed_type && er.failed_type->op->der_encoder) {
+ errno = EBADF; /* Structure has incorrect form. */
+ } else {
+ errno = ENOENT; /* DER is not defined for this type. */
+ }
+ }
+ } else {
+ errno = ENOENT; /* Transfer syntax is not defined for this type. */
+ ASN__ENCODE_FAILED;
+ }
+ break;
+ case ATS_CER:
+ errno = ENOENT; /* Transfer syntax is not defined for any type. */
+ ASN__ENCODE_FAILED;
+
+#ifdef ASN_DISABLE_OER_SUPPORT
+ case ATS_BASIC_OER:
+ case ATS_CANONICAL_OER:
+ errno = ENOENT; /* PER is not defined. */
+ ASN__ENCODE_FAILED;
+ break;
+#else /* ASN_DISABLE_OER_SUPPORT */
+ case ATS_BASIC_OER:
+ /* CANONICAL-OER is a superset of BASIC-OER. */
+ /* Fall through. */
+ case ATS_CANONICAL_OER:
+ if(td->op->oer_encoder) {
+ er = oer_encode(td, sptr, callback, callback_key);
+ if(er.encoded == -1) {
+ if(er.failed_type && er.failed_type->op->oer_encoder) {
+ errno = EBADF; /* Structure has incorrect form. */
+ } else {
+ errno = ENOENT; /* OER is not defined for this type. */
+ }
+ }
+ } else {
+ errno = ENOENT; /* Transfer syntax is not defined for this type. */
+ ASN__ENCODE_FAILED;
+ }
+ break;
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+#ifdef ASN_DISABLE_PER_SUPPORT
+ case ATS_UNALIGNED_BASIC_PER:
+ case ATS_UNALIGNED_CANONICAL_PER:
+ case ATS_ALIGNED_BASIC_PER:
+ case ATS_ALIGNED_CANONICAL_PER:
+ errno = ENOENT; /* PER is not defined. */
+ ASN__ENCODE_FAILED;
+ break;
+#else /* ASN_DISABLE_PER_SUPPORT */
+ case ATS_UNALIGNED_BASIC_PER:
+ /* CANONICAL-UPER is a superset of BASIC-UPER. */
+ /* Fall through. */
+ case ATS_UNALIGNED_CANONICAL_PER:
+ if(td->op->uper_encoder) {
+ er = uper_encode(td, 0, sptr, callback, callback_key);
+ if(er.encoded == -1) {
+ if(er.failed_type && er.failed_type->op->uper_encoder) {
+ errno = EBADF; /* Structure has incorrect form. */
+ } else {
+ errno = ENOENT; /* UPER is not defined for this type. */
+ }
+ } else {
+ ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded);
+ if(er.encoded == 0) {
+ /* Enforce "Complete Encoding" of X.691 #11.1 */
+ if(callback("\0", 1, callback_key) < 0) {
+ errno = EBADF;
+ ASN__ENCODE_FAILED;
+ }
+ er.encoded = 8; /* Exactly 8 zero bits is added. */
+ }
+ /* Convert bits into bytes */
+ er.encoded = (er.encoded + 7) >> 3;
+ }
+ } else {
+ errno = ENOENT; /* Transfer syntax is not defined for this type. */
+ ASN__ENCODE_FAILED;
+ }
+ break;
+ case ATS_ALIGNED_BASIC_PER:
+ /* CANONICAL-APER is a superset of BASIC-APER. */
+ /* Fall through. */
+ case ATS_ALIGNED_CANONICAL_PER:
+ if(td->op->aper_encoder) {
+ er = aper_encode(td, 0, sptr, callback, callback_key);
+ if(er.encoded == -1) {
+ if(er.failed_type && er.failed_type->op->aper_encoder) {
+ errno = EBADF; /* Structure has incorrect form. */
+ } else {
+ errno = ENOENT; /* APER is not defined for this type. */
+ }
+ } else {
+ ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded);
+ if(er.encoded == 0) {
+ /* Enforce "Complete Encoding" of X.691 #11.1 */
+ if(callback("\0", 1, callback_key) < 0) {
+ errno = EBADF;
+ ASN__ENCODE_FAILED;
+ }
+ er.encoded = 8; /* Exactly 8 zero bits is added. */
+ }
+ /* Convert bits into bytes */
+ er.encoded = (er.encoded + 7) >> 3;
+ }
+ } else {
+ errno = ENOENT; /* Transfer syntax is not defined for this type. */
+ ASN__ENCODE_FAILED;
+ }
+ break;
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+ case ATS_BASIC_XER:
+ /* CANONICAL-XER is a superset of BASIC-XER. */
+ xer_flags &= ~XER_F_CANONICAL;
+ xer_flags |= XER_F_BASIC;
+ /* Fall through. */
+ case ATS_CANONICAL_XER:
+ if(td->op->xer_encoder) {
+ er = xer_encode(td, sptr, xer_flags, callback, callback_key);
+ if(er.encoded == -1) {
+ if(er.failed_type && er.failed_type->op->xer_encoder) {
+ errno = EBADF; /* Structure has incorrect form. */
+ } else {
+ errno = ENOENT; /* XER is not defined for this type. */
+ }
+ }
+ } else {
+ errno = ENOENT; /* Transfer syntax is not defined for this type. */
+ ASN__ENCODE_FAILED;
+ }
+ break;
+
+ default:
+ errno = ENOENT;
+ ASN__ENCODE_FAILED;
+ }
+
+ return er;
+}
+
+asn_dec_rval_t
+asn_decode(const asn_codec_ctx_t *opt_codec_ctx,
+ enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td,
+ void **sptr, const void *buffer, size_t size) {
+ if(!td || !td->op || !sptr || (size && !buffer)) {
+ ASN__DECODE_FAILED;
+ }
+
+ switch(syntax) {
+ case ATS_CER:
+ case ATS_NONSTANDARD_PLAINTEXT:
+ default:
+ errno = ENOENT;
+ ASN__DECODE_FAILED;
+
+ case ATS_RANDOM:
+ if(!td->op->random_fill) {
+ ASN__DECODE_FAILED;
+ } else {
+ if(asn_random_fill(td, sptr, 16000) == 0) {
+ asn_dec_rval_t ret = {RC_OK, 0};
+ return ret;
+ } else {
+ ASN__DECODE_FAILED;
+ }
+ }
+ break;
+
+ case ATS_DER:
+ case ATS_BER:
+ return ber_decode(opt_codec_ctx, td, sptr, buffer, size);
+
+ case ATS_BASIC_OER:
+ case ATS_CANONICAL_OER:
+#ifdef ASN_DISABLE_OER_SUPPORT
+ errno = ENOENT;
+ ASN__DECODE_FAILED;
+#else
+ return oer_decode(opt_codec_ctx, td, sptr, buffer, size);
+#endif
+
+ case ATS_UNALIGNED_BASIC_PER:
+ case ATS_UNALIGNED_CANONICAL_PER:
+#ifdef ASN_DISABLE_PER_SUPPORT
+ errno = ENOENT;
+ ASN__DECODE_FAILED;
+#else
+ return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size);
+#endif
+
+ case ATS_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/src/asn/asn1c/asn_application.h b/src/asn/asn1c/asn_application.h
new file mode 100644
index 0000000..449318d
--- /dev/null
+++ b/src/asn/asn1c/asn_application.h
@@ -0,0 +1,171 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Application-level ASN.1 callbacks.
+ */
+#ifndef ASN_APPLICATION_H
+#define ASN_APPLICATION_H
+
+#include "asn_system.h" /* for platform-dependent types */
+#include "asn_codecs.h" /* for ASN.1 codecs specifics */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * A selection of ASN.1 Transfer Syntaxes to use with generalized
+ * encoders and decoders declared further in this .h file.
+ */
+enum asn_transfer_syntax {
+ /* Avoid appearance of a default transfer syntax. */
+ ATS_INVALID = 0,
+ /* Plaintext output (not conforming to any standard), for debugging. */
+ ATS_NONSTANDARD_PLAINTEXT,
+ /* Returns a randomly generatede structure. */
+ ATS_RANDOM,
+ /*
+ * X.690:
+ * BER: Basic Encoding Rules.
+ * DER: Distinguished Encoding Rules.
+ * CER: Canonical Encoding Rules.
+ * DER and CER are more strict variants of BER.
+ */
+ ATS_BER,
+ ATS_DER,
+ ATS_CER, /* Only decoding is supported */
+ /*
+ * X.696:
+ * OER: Octet Encoding Rules.
+ * CANONICAL-OER is a more strict variant of BASIC-OER.
+ */
+ ATS_BASIC_OER,
+ ATS_CANONICAL_OER,
+ /*
+ * X.691:
+ * PER: Packed Encoding Rules.
+ * CANONICAL-PER is a more strict variant of BASIC-PER.
+ * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1).
+ */
+ ATS_UNALIGNED_BASIC_PER,
+ ATS_UNALIGNED_CANONICAL_PER,
+ ATS_ALIGNED_BASIC_PER,
+ ATS_ALIGNED_CANONICAL_PER,
+ /*
+ * X.693:
+ * XER: XML Encoding Rules.
+ * CANONICAL-XER is a more strict variant of BASIC-XER.
+ */
+ ATS_BASIC_XER,
+ ATS_CANONICAL_XER
+};
+
+/*
+ * A generic encoder for any supported transfer syntax.
+ * RETURN VALUES:
+ * The (.encoded) field of the return value is REDEFINED to mean the following:
+ * >=0: The computed size of the encoded data. Can exceed the (buffer_size).
+ * -1: Error encoding the structure. See the error code in (errno):
+ * EINVAL: Incorrect parameters to the function, such as NULLs.
+ * ENOENT: Encoding transfer syntax is not defined (for this type).
+ * EBADF: The structure has invalid form or content constraint failed.
+ * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate
+ * values at the place of failure, if at all possible.
+ * WARNING: The (.encoded) field of the return value can exceed the buffer_size.
+ * This is similar to snprintf(3) contract which might return values
+ * greater than the buffer size.
+ */
+asn_enc_rval_t asn_encode_to_buffer(
+ const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+ enum asn_transfer_syntax,
+ const struct asn_TYPE_descriptor_s *type_to_encode,
+ const void *structure_to_encode, void *buffer, size_t buffer_size);
+
+/*
+ * A variant of asn_encode_to_buffer() with automatically allocated buffer.
+ * RETURN VALUES:
+ * On success, returns a newly allocated (.buffer) containing the whole message.
+ * The message size is returned in (.result.encoded).
+ * On failure:
+ * (.buffer) is NULL,
+ * (.result.encoded) as in asn_encode_to_buffer(),
+ * The errno codes as in asn_encode_to_buffer(), plus the following:
+ * ENOMEM: Memory allocation failed due to system or internal limits.
+ * The user is responsible for freeing the (.buffer).
+ */
+typedef struct asn_encode_to_new_buffer_result_s {
+ void *buffer; /* NULL if failed to encode. */
+ asn_enc_rval_t result;
+} asn_encode_to_new_buffer_result_t;
+asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer(
+ const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+ enum asn_transfer_syntax,
+ const struct asn_TYPE_descriptor_s *type_to_encode,
+ const void *structure_to_encode);
+
+
+/*
+ * Generic type of an application-defined callback to return various
+ * types of data to the application.
+ * EXPECTED RETURN VALUES:
+ * -1: Failed to consume bytes. Abort the mission.
+ * Non-negative return values indicate success, and ignored.
+ */
+typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size,
+ void *application_specific_key);
+
+
+/*
+ * A generic encoder for any supported transfer syntax.
+ * Returns the comprehensive encoding result descriptor (see asn_codecs.h).
+ * RETURN VALUES:
+ * The negative (.encoded) field of the return values is accompanied with the
+ * following error codes (errno):
+ * EINVAL: Incorrect parameters to the function, such as NULLs.
+ * ENOENT: Encoding transfer syntax is not defined (for this type).
+ * EBADF: The structure has invalid form or content constraint failed.
+ * EIO: The (callback) has returned negative value during encoding.
+ */
+asn_enc_rval_t asn_encode(
+ const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */
+ enum asn_transfer_syntax,
+ const struct asn_TYPE_descriptor_s *type_to_encode,
+ const void *structure_to_encode,
+ asn_app_consume_bytes_f *callback, void *callback_key);
+
+
+/*
+ * A generic decoder for any supported transfer syntax.
+ */
+asn_dec_rval_t asn_decode(
+ const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax,
+ const struct asn_TYPE_descriptor_s *type_to_decode,
+ void **structure_ptr, /* Pointer to a target structure's pointer */
+ const void *buffer, /* Data to be decoded */
+ size_t size /* Size of that buffer */
+);
+
+
+/*
+ * A callback of this type is called whenever constraint validation fails
+ * on some ASN.1 type. See "constraints.h" for more details on constraint
+ * validation.
+ * This callback specifies a descriptor of the ASN.1 type which failed
+ * the constraint check, as well as human readable message on what
+ * particular constraint has failed.
+ */
+typedef void (asn_app_constraint_failed_f)(void *application_specific_key,
+ const struct asn_TYPE_descriptor_s *type_descriptor_which_failed,
+ const void *structure_which_failed_ptr,
+ const char *error_message_format, ...) CC_PRINTFLIKE(4, 5);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */
+
+#endif /* ASN_APPLICATION_H */
diff --git a/src/asn/asn1c/asn_bit_data.c b/src/asn/asn1c/asn_bit_data.c
new file mode 100644
index 0000000..fe4b89b
--- /dev/null
+++ b/src/asn/asn1c/asn_bit_data.c
@@ -0,0 +1,333 @@
+/*
+ * Copyright (c) 2005-2017 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * Create a contiguous non-refillable bit data structure.
+ * Can be freed by FREEMEM().
+ */
+asn_bit_data_t *
+asn_bit_data_new_contiguous(const void *data, size_t size_bits) {
+ size_t size_bytes = (size_bits + 7) / 8;
+ asn_bit_data_t *pd;
+ uint8_t *bytes;
+
+ /* Get the extensions map */
+ pd = CALLOC(1, sizeof(*pd) + size_bytes + 1);
+ if(!pd) {
+ return NULL;
+ }
+ bytes = (void *)(((char *)pd) + sizeof(*pd));
+ memcpy(bytes, data, size_bytes);
+ bytes[size_bytes] = 0;
+ pd->buffer = bytes;
+ pd->nboff = 0;
+ pd->nbits = size_bits;
+
+ return pd;
+}
+
+
+char *
+asn_bit_data_string(asn_bit_data_t *pd) {
+ static char buf[2][32];
+ static int n;
+ n = (n+1) % 2;
+ snprintf(buf[n], sizeof(buf[n]),
+ "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE
+ "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}",
+ pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits,
+ pd->nbits - pd->nboff);
+ return buf[n];
+}
+
+void
+asn_get_undo(asn_bit_data_t *pd, int nbits) {
+ if((ssize_t)pd->nboff < nbits) {
+ assert((ssize_t)pd->nboff < nbits);
+ } else {
+ pd->nboff -= nbits;
+ pd->moved -= nbits;
+ }
+}
+
+/*
+ * Extract a small number of bits (<= 31) from the specified PER data pointer.
+ */
+int32_t
+asn_get_few_bits(asn_bit_data_t *pd, int nbits) {
+ size_t off; /* Next after last bit offset */
+ ssize_t nleft; /* Number of bits left in this stream */
+ uint32_t accum;
+ const uint8_t *buf;
+
+ if(nbits < 0)
+ return -1;
+
+ nleft = pd->nbits - pd->nboff;
+ if(nbits > nleft) {
+ int32_t tailv, vhead;
+ if(!pd->refill || nbits > 31) return -1;
+ /* Accumulate unused bytes before refill */
+ ASN_DEBUG("Obtain the rest %d bits (want %d)",
+ (int)nleft, (int)nbits);
+ tailv = asn_get_few_bits(pd, nleft);
+ if(tailv < 0) return -1;
+ /* Refill (replace pd contents with new data) */
+ if(pd->refill(pd))
+ return -1;
+ nbits -= nleft;
+ vhead = asn_get_few_bits(pd, nbits);
+ /* Combine the rest of previous pd with the head of new one */
+ tailv = (tailv << nbits) | vhead; /* Could == -1 */
+ return tailv;
+ }
+
+ /*
+ * Normalize position indicator.
+ */
+ if(pd->nboff >= 8) {
+ pd->buffer += (pd->nboff >> 3);
+ pd->nbits -= (pd->nboff & ~0x07);
+ pd->nboff &= 0x07;
+ }
+ pd->moved += nbits;
+ pd->nboff += nbits;
+ off = pd->nboff;
+ buf = pd->buffer;
+
+ /*
+ * Extract specified number of bits.
+ */
+ if(off <= 8)
+ accum = nbits ? (buf[0]) >> (8 - off) : 0;
+ else if(off <= 16)
+ accum = ((buf[0] << 8) + buf[1]) >> (16 - off);
+ else if(off <= 24)
+ accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off);
+ else if(off <= 31)
+ accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16)
+ + (buf[2] << 8) + (buf[3])) >> (32 - off);
+ else if(nbits <= 31) {
+ asn_bit_data_t tpd = *pd;
+ /* Here are we with our 31-bits limit plus 1..7 bits offset. */
+ asn_get_undo(&tpd, nbits);
+ /* The number of available bits in the stream allow
+ * for the following operations to take place without
+ * invoking the ->refill() function */
+ accum = asn_get_few_bits(&tpd, nbits - 24) << 24;
+ accum |= asn_get_few_bits(&tpd, 24);
+ } else {
+ asn_get_undo(pd, nbits);
+ return -1;
+ }
+
+ accum &= (((uint32_t)1 << nbits) - 1);
+
+ ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]",
+ (int)nbits, (int)nleft,
+ (int)pd->moved,
+ (((long)pd->buffer) & 0xf),
+ (int)pd->nboff, (int)pd->nbits,
+ ((pd->buffer != NULL)?pd->buffer[0]:0),
+ (int)(pd->nbits - pd->nboff),
+ (int)accum);
+
+ return accum;
+}
+
+/*
+ * Extract a large number of bits from the specified PER data pointer.
+ */
+int
+asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) {
+ int32_t value;
+
+ if(alright && (nbits & 7)) {
+ /* Perform right alignment of a first few bits */
+ value = asn_get_few_bits(pd, nbits & 0x07);
+ if(value < 0) return -1;
+ *dst++ = value; /* value is already right-aligned */
+ nbits &= ~7;
+ }
+
+ while(nbits) {
+ if(nbits >= 24) {
+ value = asn_get_few_bits(pd, 24);
+ if(value < 0) return -1;
+ *(dst++) = value >> 16;
+ *(dst++) = value >> 8;
+ *(dst++) = value;
+ nbits -= 24;
+ } else {
+ value = asn_get_few_bits(pd, nbits);
+ if(value < 0) return -1;
+ if(nbits & 7) { /* implies left alignment */
+ value <<= 8 - (nbits & 7),
+ nbits += 8 - (nbits & 7);
+ if(nbits > 24)
+ *dst++ = value >> 24;
+ }
+ if(nbits > 16)
+ *dst++ = value >> 16;
+ if(nbits > 8)
+ *dst++ = value >> 8;
+ *dst++ = value;
+ break;
+ }
+ }
+
+ return 0;
+}
+
+/*
+ * Put a small number of bits (<= 31).
+ */
+int
+asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) {
+ size_t off; /* Next after last bit offset */
+ size_t omsk; /* Existing last byte meaningful bits mask */
+ uint8_t *buf;
+
+ if(obits <= 0 || obits >= 32) return obits ? -1 : 0;
+
+ ASN_DEBUG("[PER put %d bits %x to %p+%d bits]",
+ obits, (int)bits, (void *)po->buffer, (int)po->nboff);
+
+ /*
+ * Normalize position indicator.
+ */
+ if(po->nboff >= 8) {
+ po->buffer += (po->nboff >> 3);
+ po->nbits -= (po->nboff & ~0x07);
+ po->nboff &= 0x07;
+ }
+
+ /*
+ * Flush whole-bytes output, if necessary.
+ */
+ if(po->nboff + obits > po->nbits) {
+ size_t complete_bytes;
+ if(!po->buffer) po->buffer = po->tmpspace;
+ complete_bytes = (po->buffer - po->tmpspace);
+ ASN_DEBUG("[PER output %ld complete + %ld]",
+ (long)complete_bytes, (long)po->flushed_bytes);
+ if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0)
+ return -1;
+ if(po->nboff)
+ po->tmpspace[0] = po->buffer[0];
+ po->buffer = po->tmpspace;
+ po->nbits = 8 * sizeof(po->tmpspace);
+ po->flushed_bytes += complete_bytes;
+ }
+
+ /*
+ * Now, due to sizeof(tmpspace), we are guaranteed large enough space.
+ */
+ buf = po->buffer;
+ omsk = ~((1 << (8 - po->nboff)) - 1);
+ off = (po->nboff + obits);
+
+ /* Clear data of debris before meaningful bits */
+ bits &= (((uint32_t)1 << obits) - 1);
+
+ ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits,
+ (int)bits, (int)bits,
+ (int)po->nboff, (int)off,
+ buf[0], (int)(omsk&0xff),
+ (int)(buf[0] & omsk));
+
+ if(off <= 8) /* Completely within 1 byte */
+ po->nboff = off,
+ bits <<= (8 - off),
+ buf[0] = (buf[0] & omsk) | bits;
+ else if(off <= 16)
+ po->nboff = off,
+ bits <<= (16 - off),
+ buf[0] = (buf[0] & omsk) | (bits >> 8),
+ buf[1] = bits;
+ else if(off <= 24)
+ po->nboff = off,
+ bits <<= (24 - off),
+ buf[0] = (buf[0] & omsk) | (bits >> 16),
+ buf[1] = bits >> 8,
+ buf[2] = bits;
+ else if(off <= 31)
+ po->nboff = off,
+ bits <<= (32 - off),
+ buf[0] = (buf[0] & omsk) | (bits >> 24),
+ buf[1] = bits >> 16,
+ buf[2] = bits >> 8,
+ buf[3] = bits;
+ else {
+ if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1;
+ if(asn_put_few_bits(po, bits, obits - 24)) return -1;
+ }
+
+ ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]",
+ (int)bits, (int)bits, buf[0],
+ (long)(po->buffer - po->tmpspace));
+
+ return 0;
+}
+
+
+/*
+ * Output a large number of bits.
+ */
+int
+asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) {
+
+ while(nbits) {
+ uint32_t value;
+
+ if(nbits >= 24) {
+ value = (src[0] << 16) | (src[1] << 8) | src[2];
+ src += 3;
+ nbits -= 24;
+ if(asn_put_few_bits(po, value, 24))
+ return -1;
+ } else {
+ value = src[0];
+ if(nbits > 8)
+ value = (value << 8) | src[1];
+ if(nbits > 16)
+ value = (value << 8) | src[2];
+ if(nbits & 0x07)
+ value >>= (8 - (nbits & 0x07));
+ if(asn_put_few_bits(po, value, nbits))
+ return -1;
+ break;
+ }
+ }
+
+ return 0;
+}
+
+
+int
+asn_put_aligned_flush(asn_bit_outp_t *po) {
+ uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07)));
+ size_t complete_bytes =
+ (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3);
+
+ if(unused_bits) {
+ po->buffer[po->nboff >> 3] &= ~0u << unused_bits;
+ }
+
+ if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) {
+ return -1;
+ } else {
+ po->buffer = po->tmpspace;
+ po->nboff = 0;
+ po->nbits = 8 * sizeof(po->tmpspace);
+ po->flushed_bytes += complete_bytes;
+ return 0;
+ }
+}
+
diff --git a/src/asn/asn1c/asn_bit_data.h b/src/asn/asn1c/asn_bit_data.h
new file mode 100644
index 0000000..59de7af
--- /dev/null
+++ b/src/asn/asn1c/asn_bit_data.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2005-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_BIT_DATA
+#define ASN_BIT_DATA
+
+#include /* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * This structure describes a position inside an incoming PER bit stream.
+ */
+typedef struct asn_bit_data_s {
+ const uint8_t *buffer; /* Pointer to the octet stream */
+ size_t nboff; /* Bit offset to the meaningful bit */
+ size_t nbits; /* Number of bits in the stream */
+ size_t moved; /* Number of bits moved through this bit stream */
+ int (*refill)(struct asn_bit_data_s *);
+ void *refill_key;
+} asn_bit_data_t;
+
+/*
+ * Create a contiguous non-refillable bit data structure.
+ * Can be freed by FREEMEM().
+ */
+asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits);
+
+/*
+ * Extract a small number of bits (<= 31) from the specified PER data pointer.
+ * This function returns -1 if the specified number of bits could not be
+ * extracted due to EOD or other conditions.
+ */
+int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits);
+
+/* Undo the immediately preceeding "get_few_bits" operation */
+void asn_get_undo(asn_bit_data_t *, int get_nbits);
+
+/*
+ * Extract a large number of bits from the specified PER data pointer.
+ * This function returns -1 if the specified number of bits could not be
+ * extracted due to EOD or other conditions.
+ */
+int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align,
+ int get_nbits);
+
+/* Non-thread-safe debugging function, don't use it */
+char *asn_bit_data_string(asn_bit_data_t *);
+
+/*
+ * This structure supports forming bit output.
+ */
+typedef struct asn_bit_outp_s {
+ uint8_t *buffer; /* Pointer into the (tmpspace) */
+ size_t nboff; /* Bit offset to the meaningful bit */
+ size_t nbits; /* Number of bits left in (tmpspace) */
+ uint8_t tmpspace[32]; /* Preliminary storage to hold data */
+ int (*output)(const void *data, size_t size, void *op_key);
+ void *op_key; /* Key for (output) data callback */
+ size_t flushed_bytes; /* Bytes already flushed through (output) */
+} asn_bit_outp_t;
+
+/* Output a small number of bits (<= 31) */
+int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits);
+
+/* Output a large number of bits */
+int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits);
+
+/*
+ * Flush whole bytes (0 or more) through (outper) member.
+ * The least significant bits which are not used are guaranteed to be set to 0.
+ * Returns -1 if callback returns -1. Otherwise, 0.
+ */
+int asn_put_aligned_flush(asn_bit_outp_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_BIT_DATA */
diff --git a/src/asn/asn1c/asn_codecs.h b/src/asn/asn1c/asn_codecs.h
new file mode 100644
index 0000000..e75c270
--- /dev/null
+++ b/src/asn/asn1c/asn_codecs.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_CODECS_H
+#define ASN_CODECS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s; /* Forward declaration */
+
+/*
+ * This structure defines a set of parameters that may be passed
+ * to every ASN.1 encoder or decoder function.
+ * WARNING: if max_stack_size member is set, and you are calling the
+ * function pointers of the asn_TYPE_descriptor_t directly,
+ * this structure must be ALLOCATED ON THE STACK!
+ * If you can't always satisfy this requirement, use ber_decode(),
+ * xer_decode() and uper_decode() functions instead.
+ */
+typedef struct asn_codec_ctx_s {
+ /*
+ * Limit the decoder routines to use no (much) more stack than a given
+ * number of bytes. Most of decoders are stack-based, and this
+ * would protect against stack overflows if the number of nested
+ * encodings is high.
+ * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based,
+ * and are safe from this kind of overflow.
+ * A value from getrlimit(RLIMIT_STACK) may be used to initialize
+ * this variable. Be careful in multithreaded environments, as the
+ * stack size is rather limited.
+ */
+ size_t max_stack_size; /* 0 disables stack bounds checking */
+} asn_codec_ctx_t;
+
+/*
+ * Type of the return value of the encoding functions (der_encode, xer_encode).
+ */
+typedef struct asn_enc_rval_s {
+ /*
+ * Number of bytes encoded.
+ * -1 indicates failure to encode the structure.
+ * In this case, the members below this one are meaningful.
+ */
+ ssize_t encoded;
+
+ /*
+ * Members meaningful when (encoded == -1), for post mortem analysis.
+ */
+
+ /* Type which cannot be encoded */
+ const struct asn_TYPE_descriptor_s *failed_type;
+
+ /* Pointer to the structure of that type */
+ const void *structure_ptr;
+} asn_enc_rval_t;
+#define ASN__ENCODE_FAILED do { \
+ asn_enc_rval_t tmp_error; \
+ tmp_error.encoded = -1; \
+ tmp_error.failed_type = td; \
+ tmp_error.structure_ptr = sptr; \
+ ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \
+ return tmp_error; \
+} while(0)
+#define ASN__ENCODED_OK(rval) do { \
+ rval.structure_ptr = 0; \
+ rval.failed_type = 0; \
+ return rval; \
+} while(0)
+
+/*
+ * Type of the return value of the decoding functions (ber_decode, xer_decode)
+ *
+ * Please note that the number of consumed bytes is ALWAYS meaningful,
+ * even if code==RC_FAIL. This is to indicate the number of successfully
+ * decoded bytes, hence providing a possibility to fail with more diagnostics
+ * (i.e., print the offending remainder of the buffer).
+ */
+enum asn_dec_rval_code_e {
+ RC_OK, /* Decoded successfully */
+ RC_WMORE, /* More data expected, call again */
+ RC_FAIL /* Failure to decode data */
+};
+typedef struct asn_dec_rval_s {
+ enum asn_dec_rval_code_e code; /* Result code */
+ size_t consumed; /* Number of bytes consumed */
+} asn_dec_rval_t;
+#define ASN__DECODE_FAILED do { \
+ asn_dec_rval_t tmp_error; \
+ tmp_error.code = RC_FAIL; \
+ tmp_error.consumed = 0; \
+ ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \
+ return tmp_error; \
+} while(0)
+#define ASN__DECODE_STARVED do { \
+ asn_dec_rval_t tmp_error; \
+ tmp_error.code = RC_WMORE; \
+ tmp_error.consumed = 0; \
+ return tmp_error; \
+} while(0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_CODECS_H */
diff --git a/src/asn/asn1c/asn_codecs_prim.c b/src/asn/asn1c/asn_codecs_prim.c
new file mode 100644
index 0000000..78448a8
--- /dev/null
+++ b/src/asn/asn1c/asn_codecs_prim.c
@@ -0,0 +1,317 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * Decode an always-primitive type.
+ */
+asn_dec_rval_t
+ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ const void *buf_ptr, size_t size, int tag_mode) {
+ ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr;
+ asn_dec_rval_t rval;
+ ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */
+
+ /*
+ * If the structure is not there, allocate it.
+ */
+ if(st == NULL) {
+ st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st));
+ if(st == NULL) ASN__DECODE_FAILED;
+ *sptr = (void *)st;
+ }
+
+ ASN_DEBUG("Decoding %s as plain primitive (tm=%d)",
+ td->name, tag_mode);
+
+ /*
+ * Check tags and extract value length.
+ */
+ rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size,
+ tag_mode, 0, &length, 0);
+ if(rval.code != RC_OK)
+ return rval;
+
+ ASN_DEBUG("%s length is %d bytes", td->name, (int)length);
+
+ /*
+ * Make sure we have this length.
+ */
+ buf_ptr = ((const char *)buf_ptr) + rval.consumed;
+ size -= rval.consumed;
+ if(length > (ber_tlv_len_t)size) {
+ rval.code = RC_WMORE;
+ rval.consumed = 0;
+ return rval;
+ }
+
+ st->size = (int)length;
+ /* The following better be optimized away. */
+ if(sizeof(st->size) != sizeof(length)
+ && (ber_tlv_len_t)st->size != length) {
+ st->size = 0;
+ ASN__DECODE_FAILED;
+ }
+
+ st->buf = (uint8_t *)MALLOC(length + 1);
+ if(!st->buf) {
+ st->size = 0;
+ ASN__DECODE_FAILED;
+ }
+
+ memcpy(st->buf, buf_ptr, length);
+ st->buf[length] = '\0'; /* Just in case */
+
+ rval.code = RC_OK;
+ rval.consumed += length;
+
+ ASN_DEBUG("Took %ld/%ld bytes to encode %s",
+ (long)rval.consumed,
+ (long)length, td->name);
+
+ return rval;
+}
+
+/*
+ * Encode an always-primitive type using DER.
+ */
+asn_enc_rval_t
+der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t erval;
+ const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr;
+
+ ASN_DEBUG("%s %s as a primitive type (tm=%d)",
+ cb?"Encoding":"Estimating", td->name, tag_mode);
+
+ erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag,
+ cb, app_key);
+ ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded);
+ if(erval.encoded == -1) {
+ erval.failed_type = td;
+ erval.structure_ptr = sptr;
+ return erval;
+ }
+
+ if(cb && st->buf) {
+ if(cb(st->buf, st->size, app_key) < 0) {
+ erval.encoded = -1;
+ erval.failed_type = td;
+ erval.structure_ptr = sptr;
+ return erval;
+ }
+ } else {
+ assert(st->buf || st->size == 0);
+ }
+
+ erval.encoded += st->size;
+ ASN__ENCODED_OK(erval);
+}
+
+void
+ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr,
+ enum asn_struct_free_method method) {
+ ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr;
+
+ if(!td || !sptr)
+ return;
+
+ ASN_DEBUG("Freeing %s as a primitive type", td->name);
+
+ if(st->buf)
+ FREEMEM(st->buf);
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(sptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t));
+ break;
+ }
+}
+
+
+/*
+ * Local internal type passed around as an argument.
+ */
+struct xdp_arg_s {
+ const asn_TYPE_descriptor_t *type_descriptor;
+ void *struct_key;
+ xer_primitive_body_decoder_f *prim_body_decoder;
+ int decoded_something;
+ int want_more;
+};
+
+/*
+ * Since some kinds of primitive values can be encoded using value-specific
+ * tags (, , etc), the primitive decoder must
+ * be supplied with such tags to parse them as needed.
+ */
+static int
+xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) {
+ struct xdp_arg_s *arg = (struct xdp_arg_s *)key;
+ enum xer_pbd_rval bret;
+
+ /*
+ * The chunk_buf is guaranteed to start at '<'.
+ */
+ assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c);
+
+ /*
+ * Decoding was performed once already. Prohibit doing it again.
+ */
+ if(arg->decoded_something)
+ return -1;
+
+ bret = arg->prim_body_decoder(arg->type_descriptor,
+ arg->struct_key, chunk_buf, chunk_size);
+ switch(bret) {
+ case XPBD_SYSTEM_FAILURE:
+ case XPBD_DECODER_LIMIT:
+ case XPBD_BROKEN_ENCODING:
+ break;
+ case XPBD_BODY_CONSUMED:
+ /* Tag decoded successfully */
+ arg->decoded_something = 1;
+ /* Fall through */
+ case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */
+ return 0;
+ }
+
+ return -1;
+}
+
+static ssize_t
+xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) {
+ struct xdp_arg_s *arg = (struct xdp_arg_s *)key;
+ enum xer_pbd_rval bret;
+ size_t lead_wsp_size;
+
+ if(arg->decoded_something) {
+ if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) {
+ /*
+ * Example:
+ * "123 "
+ * ^- chunk_buf position.
+ */
+ return chunk_size;
+ }
+ /*
+ * Decoding was done once already. Prohibit doing it again.
+ */
+ return -1;
+ }
+
+ if(!have_more) {
+ /*
+ * If we've received something like "1", we can't really
+ * tell whether it is really `1` or `123`, until we know
+ * that there is no more data coming.
+ * The have_more argument will be set to 1 once something
+ * like this is available to the caller of this callback:
+ * "1want_more = 1;
+ return -1;
+ }
+
+ lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size);
+ chunk_buf = (const char *)chunk_buf + lead_wsp_size;
+ chunk_size -= lead_wsp_size;
+
+ bret = arg->prim_body_decoder(arg->type_descriptor,
+ arg->struct_key, chunk_buf, chunk_size);
+ switch(bret) {
+ case XPBD_SYSTEM_FAILURE:
+ case XPBD_DECODER_LIMIT:
+ case XPBD_BROKEN_ENCODING:
+ break;
+ case XPBD_BODY_CONSUMED:
+ /* Tag decoded successfully */
+ arg->decoded_something = 1;
+ /* Fall through */
+ case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */
+ return lead_wsp_size + chunk_size;
+ }
+
+ return -1;
+}
+
+
+asn_dec_rval_t
+xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **sptr,
+ size_t struct_size, const char *opt_mname,
+ const void *buf_ptr, size_t size,
+ xer_primitive_body_decoder_f *prim_body_decoder) {
+ const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
+ asn_struct_ctx_t s_ctx;
+ struct xdp_arg_s s_arg;
+ asn_dec_rval_t rc;
+
+ /*
+ * Create the structure if does not exist.
+ */
+ if(!*sptr) {
+ *sptr = CALLOC(1, struct_size);
+ if(!*sptr) ASN__DECODE_FAILED;
+ }
+
+ memset(&s_ctx, 0, sizeof(s_ctx));
+ s_arg.type_descriptor = td;
+ s_arg.struct_key = *sptr;
+ s_arg.prim_body_decoder = prim_body_decoder;
+ s_arg.decoded_something = 0;
+ s_arg.want_more = 0;
+
+ rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg,
+ xml_tag, buf_ptr, size,
+ xer_decode__unexpected_tag, xer_decode__primitive_body);
+ switch(rc.code) {
+ case RC_OK:
+ if(!s_arg.decoded_something) {
+ char ch;
+ ASN_DEBUG("Primitive body is not recognized, "
+ "supplying empty one");
+ /*
+ * Decoding opportunity has come and gone.
+ * Where's the result?
+ * Try to feed with empty body, see if it eats it.
+ */
+ if(prim_body_decoder(s_arg.type_descriptor,
+ s_arg.struct_key, &ch, 0)
+ != XPBD_BODY_CONSUMED) {
+ /*
+ * This decoder does not like empty stuff.
+ */
+ ASN__DECODE_FAILED;
+ }
+ }
+ break;
+ case RC_WMORE:
+ /*
+ * Redo the whole thing later.
+ * We don't have a context to save intermediate parsing state.
+ */
+ rc.consumed = 0;
+ break;
+ case RC_FAIL:
+ rc.consumed = 0;
+ if(s_arg.want_more)
+ rc.code = RC_WMORE;
+ else
+ ASN__DECODE_FAILED;
+ break;
+ }
+ return rc;
+}
+
diff --git a/src/asn/asn1c/asn_codecs_prim.h b/src/asn/asn1c/asn_codecs_prim.h
new file mode 100644
index 0000000..fbc5576
--- /dev/null
+++ b/src/asn/asn1c/asn_codecs_prim.h
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_CODECS_PRIM_H
+#define ASN_CODECS_PRIM_H
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ASN__PRIMITIVE_TYPE_s {
+ uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */
+ size_t size; /* Size of the buffer */
+} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */
+
+asn_struct_free_f ASN__PRIMITIVE_TYPE_free;
+ber_type_decoder_f ber_decode_primitive;
+der_type_encoder_f der_encode_primitive;
+
+/*
+ * A callback specification for the xer_decode_primitive() function below.
+ */
+enum xer_pbd_rval {
+ XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */
+ XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */
+ XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */
+ XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */
+ XPBD_BODY_CONSUMED /* Body is recognized and consumed */
+};
+typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)(
+ const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf,
+ size_t chunk_size);
+
+/*
+ * Specific function to decode simple primitive types.
+ * Also see xer_decode_general() in xer_decoder.h
+ */
+asn_dec_rval_t xer_decode_primitive(
+ const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr,
+ size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size,
+ xer_primitive_body_decoder_f *prim_body_decoder);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_CODECS_PRIM_H */
diff --git a/src/asn/asn1c/asn_internal.c b/src/asn/asn1c/asn_internal.c
new file mode 100644
index 0000000..c2a8108
--- /dev/null
+++ b/src/asn/asn1c/asn_internal.c
@@ -0,0 +1,48 @@
+#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);
+ va_end(args);
+ if(wrote < (ssize_t)buf_size) {
+ if(wrote < 0) {
+ if(buf != scratch) FREEMEM(buf);
+ return -1;
+ }
+ break;
+ }
+
+ buf_size <<= 1;
+ if(buf == scratch) {
+ buf = MALLOC(buf_size);
+ if(!buf) return -1;
+ } else {
+ void *p = REALLOC(buf, buf_size);
+ if(!p) {
+ FREEMEM(buf);
+ return -1;
+ }
+ buf = p;
+ }
+ } while(1);
+
+ cb_ret = cb(buf, wrote, key);
+ if(buf != scratch) FREEMEM(buf);
+ if(cb_ret < 0) {
+ return -1;
+ }
+
+ return wrote;
+}
+
diff --git a/src/asn/asn1c/asn_internal.h b/src/asn/asn1c/asn_internal.h
new file mode 100644
index 0000000..2736083
--- /dev/null
+++ b/src/asn/asn1c/asn_internal.h
@@ -0,0 +1,151 @@
+/*
+ * 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 __STDC_VERSION__ >= 199901L
+#ifdef ASN_THREAD_SAFE
+/* Thread safety requires sacrifice in output indentation:
+ * Retain empty definition of ASN_DEBUG_INDENT_ADD. */
+#else /* !ASN_THREAD_SAFE */
+#undef ASN_DEBUG_INDENT_ADD
+#undef asn_debug_indent
+int asn_debug_indent;
+#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0)
+#endif /* ASN_THREAD_SAFE */
+#define ASN_DEBUG(fmt, args...) do { \
+ int adi = asn_debug_indent; \
+ while(adi--) fprintf(stderr, " "); \
+ fprintf(stderr, fmt, ##args); \
+ fprintf(stderr, " (%s:%d)\n", \
+ __FILE__, __LINE__); \
+ } while(0)
+#else /* !C99 */
+void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...);
+#define ASN_DEBUG ASN_DEBUG_f
+#endif /* C99 */
+#else /* ASN_EMIT_DEBUG != 1 */
+#if __STDC_VERSION__ >= 199901L
+#define ASN_DEBUG(...) do{}while(0)
+#else /* not C99 */
+static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; }
+#endif /* C99 or better */
+#endif /* ASN_EMIT_DEBUG */
+#endif /* ASN_DEBUG */
+
+/*
+ * Print to a callback.
+ * The callback is expected to return negative values on error.
+ * 0 and positive values are treated as success.
+ * RETURN VALUES:
+ * -1: Failed to format or invoke the callback.
+ * >0: Size of the data that got delivered to the callback.
+ */
+ssize_t CC_PRINTFLIKE(3, 4)
+asn__format_to_callback(
+ int (*callback)(const void *, size_t, void *key), void *key,
+ const char *fmt, ...);
+
+/*
+ * Invoke the application-supplied callback and fail, if something is wrong.
+ */
+#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0)
+#define ASN__E_CALLBACK(size, foo) \
+ do { \
+ if(foo) goto cb_failed; \
+ er.encoded += (size); \
+ } while(0)
+#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size))
+#define ASN__CALLBACK2(buf1, size1, buf2, size2) \
+ ASN__E_CALLBACK((size1) + (size2), \
+ ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2))
+#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \
+ ASN__E_CALLBACK((size1) + (size2) + (size3), \
+ ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \
+ || ASN__E_cbc(buf3, size3))
+
+#define ASN__TEXT_INDENT(nl, level) \
+ do { \
+ int tmp_level = (level); \
+ int tmp_nl = ((nl) != 0); \
+ int tmp_i; \
+ if(tmp_nl) ASN__CALLBACK("\n", 1); \
+ if(tmp_level < 0) tmp_level = 0; \
+ for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \
+ } while(0)
+
+#define _i_INDENT(nl) do { \
+ int tmp_i; \
+ if((nl) && cb("\n", 1, app_key) < 0) \
+ return -1; \
+ for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \
+ if(cb(" ", 4, app_key) < 0) \
+ return -1; \
+ } while(0)
+
+/*
+ * Check stack against overflow, if limit is set.
+ */
+#define ASN__DEFAULT_STACK_MAX (30000)
+static int CC_NOTUSED
+ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) {
+ if(ctx && ctx->max_stack_size) {
+
+ /* ctx MUST be allocated on the stack */
+ ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx);
+ if(usedstack > 0) usedstack = -usedstack; /* grows up! */
+
+ /* double negative required to avoid int wrap-around */
+ if(usedstack < -(ptrdiff_t)ctx->max_stack_size) {
+ ASN_DEBUG("Stack limit %ld reached",
+ (long)ctx->max_stack_size);
+ return -1;
+ }
+ }
+ return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_INTERNAL_H */
diff --git a/src/asn/asn1c/asn_ioc.h b/src/asn/asn1c/asn_ioc.h
new file mode 100644
index 0000000..7de210e
--- /dev/null
+++ b/src/asn/asn1c/asn_ioc.h
@@ -0,0 +1,51 @@
+/*
+ * Run-time support for Information Object Classes.
+ * Copyright (c) 2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_IOC_H
+#define ASN_IOC_H
+
+#include /* Platform-specific types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s;
+struct asn_ioc_cell_s;
+
+/*
+ * X.681, #13
+ */
+typedef struct asn_ioc_set_s {
+ size_t rows_count;
+ size_t columns_count;
+ const struct asn_ioc_cell_s *rows;
+} asn_ioc_set_t;
+
+
+typedef struct asn_ioc_cell_s {
+ const char *field_name; /* Is equal to corresponding column_name */
+ enum {
+ aioc__undefined = 0,
+ aioc__value,
+ aioc__type,
+ aioc__open_type,
+ } cell_kind;
+ struct asn_TYPE_descriptor_s *type_descriptor;
+ const void *value_sptr;
+ struct {
+ size_t types_count;
+ struct {
+ unsigned choice_position;
+ } *types;
+ } open_type;
+} asn_ioc_cell_t;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_IOC_H */
diff --git a/src/asn/asn1c/asn_random_fill.c b/src/asn/asn1c/asn_random_fill.c
new file mode 100644
index 0000000..819cf70
--- /dev/null
+++ b/src/asn/asn1c/asn_random_fill.c
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2017 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+int
+asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+ size_t length) {
+
+ if(td && td->op->random_fill) {
+ asn_random_fill_result_t res =
+ td->op->random_fill(td, struct_ptr, 0, length);
+ return (res.code == ARFILL_OK) ? 0 : -1;
+ } else {
+ return -1;
+ }
+}
+
+static uintmax_t
+asn__intmax_range(intmax_t lb, intmax_t ub) {
+ assert(lb <= ub);
+ if((ub < 0) == (lb < 0)) {
+ return ub - lb;
+ } else if(lb < 0) {
+ return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1));
+ } else {
+ assert(!"Unreachable");
+ return 0;
+ }
+}
+
+intmax_t
+asn_random_between(intmax_t lb, intmax_t rb) {
+ if(lb == rb) {
+ return lb;
+ } else {
+ const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1);
+ uintmax_t range = asn__intmax_range(lb, rb);
+ uintmax_t value = 0;
+ uintmax_t got_entropy = 0;
+
+ assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */
+ assert(range < intmax_max);
+
+ for(; got_entropy < range;) {
+ got_entropy = (got_entropy << 24) | 0xffffff;
+ value = (value << 24) | (random() % 0xffffff);
+ }
+
+ return lb + (intmax_t)(value % (range + 1));
+ }
+}
diff --git a/src/asn/asn1c/asn_random_fill.h b/src/asn/asn1c/asn_random_fill.h
new file mode 100644
index 0000000..47f9b8a
--- /dev/null
+++ b/src/asn/asn1c/asn_random_fill.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef ASN_RANDOM_FILL
+#define ASN_RANDOM_FILL
+
+/* Forward declarations */
+struct asn_TYPE_descriptor_s;
+struct asn_encoding_constraints_s;
+
+/*
+ * Initialize a structure with random data according to the type specification
+ * and optional member constraints.
+ * ARGUMENTS:
+ * (max_length) - See (approx_max_length_limit).
+ * (memb_constraints) - Member constraints, if exist.
+ * The type can be constrained differently according
+ * to PER and OER specifications, so we find a value
+ * at the intersection of these constraints.
+ * In case the return differs from ARFILL_OK, the (struct_ptr) contents
+ * and (current_length) value remain in their original state.
+ */
+typedef struct asn_random_fill_result_s {
+ enum {
+ ARFILL_FAILED = -1, /* System error (memory?) */
+ ARFILL_OK = 0, /* Initialization succeeded */
+ ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */
+ } code;
+ size_t length; /* Approximate number of bytes created. */
+} asn_random_fill_result_t;
+typedef asn_random_fill_result_t(asn_random_fill_f)(
+ const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+ const struct asn_encoding_constraints_s *memb_constraints,
+ size_t max_length);
+
+/*
+ * Returns 0 if the structure was properly initialized, -1 otherwise.
+ * The (approx_max_length_limit) specifies the approximate limit of the
+ * resulting structure in units closely resembling bytes. The actual result
+ * might be several times larger or smaller than the length limit.
+ */
+int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr,
+ size_t approx_max_length_limit);
+
+/*
+ * Returns a random number between min and max.
+ */
+intmax_t asn_random_between(intmax_t min, intmax_t max);
+
+#endif /* ASN_RANDOM_FILL */
diff --git a/src/asn/asn1c/asn_system.h b/src/asn/asn1c/asn_system.h
new file mode 100644
index 0000000..fa8cf11
--- /dev/null
+++ b/src/asn/asn1c/asn_system.h
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Miscellaneous system-dependent types.
+ */
+#ifndef ASN_SYSTEM_H
+#define ASN_SYSTEM_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _DEFAULT_SOURCE
+#define _DEFAULT_SOURCE 1
+#endif
+
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE /* for snprintf() on some linux systems */
+#endif
+
+#include /* For snprintf(3) */
+#include /* For *alloc(3) */
+#include /* For memcpy(3) */
+#include /* For size_t */
+#include /* For LONG_MAX */
+#include /* For va_start */
+#include /* for offsetof and ptrdiff_t */
+
+#ifdef _WIN32
+
+#include
+#define snprintf _snprintf
+#define vsnprintf _vsnprintf
+
+/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */
+#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \
+ | (((l) << 8) & 0xff0000) \
+ | (((l) >> 8) & 0xff00) \
+ | ((l >> 24) & 0xff))
+
+#ifdef _MSC_VER /* MSVS.Net */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */
+#define ssize_t SSIZE_T
+#if _MSC_VER < 1600
+typedef char int8_t;
+typedef short int16_t;
+typedef int int32_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+#else /* _MSC_VER >= 1600 */
+#include
+#endif /* _MSC_VER < 1600 */
+#endif /* ASSUMESTDTYPES */
+#define WIN32_LEAN_AND_MEAN
+#include
+#include
+#define isnan _isnan
+#define finite _finite
+#define copysign _copysign
+#define ilogb _logb
+#else /* !_MSC_VER */
+#include
+#endif /* _MSC_VER */
+
+#else /* !_WIN32 */
+
+#if defined(__vxworks)
+#include
+#else /* !defined(__vxworks) */
+
+#include /* C99 specifies this file */
+#include /* for ntohl() */
+#define sys_ntohl(foo) ntohl(foo)
+#endif /* defined(__vxworks) */
+
+#endif /* _WIN32 */
+
+#if __GNUC__ >= 3 || defined(__clang__)
+#define CC_ATTRIBUTE(attr) __attribute__((attr))
+#else
+#define CC_ATTRIBUTE(attr)
+#endif
+#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var))
+#define CC_NOTUSED CC_ATTRIBUTE(unused)
+#ifndef CC_ATTR_NO_SANITIZE
+#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what))
+#endif
+
+/* Figure out if thread safety is requested */
+#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT))
+#define ASN_THREAD_SAFE
+#endif /* Thread safety */
+
+#ifndef offsetof /* If not defined by */
+#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0))
+#endif /* offsetof */
+
+#ifndef MIN /* Suitable for comparing primitive types (integers) */
+#if defined(__GNUC__)
+#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \
+ ((_a)<(_b)?(_a):(_b)); })
+#else /* !__GNUC__ */
+#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */
+#endif /* __GNUC__ */
+#endif /* MIN */
+
+#if __STDC_VERSION__ >= 199901L
+#ifndef SIZE_MAX
+#define SIZE_MAX ((~((size_t)0)) >> 1)
+#endif
+
+#ifndef RSIZE_MAX /* C11, Annex K */
+#define RSIZE_MAX (SIZE_MAX >> 1)
+#endif
+#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */
+#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1))
+#endif
+#else /* Old compiler */
+#undef SIZE_MAX
+#undef RSIZE_MAX
+#undef RSSIZE_MAX
+#define SIZE_MAX ((~((size_t)0)) >> 1)
+#define RSIZE_MAX (SIZE_MAX >> 1)
+#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1))
+#endif
+
+#if __STDC_VERSION__ >= 199901L
+#define ASN_PRI_SIZE "zu"
+#define ASN_PRI_SSIZE "zd"
+#define ASN_PRIuMAX PRIuMAX
+#define ASN_PRIdMAX PRIdMAX
+#else
+#define ASN_PRI_SIZE "lu"
+#define ASN_PRI_SSIZE "ld"
+#if LLONG_MAX > LONG_MAX
+#define ASN_PRIuMAX "llu"
+#define ASN_PRIdMAX "lld"
+#else
+#define ASN_PRIuMAX "lu"
+#define ASN_PRIdMAX "ld"
+#endif
+#endif
+
+#endif /* ASN_SYSTEM_H */
diff --git a/src/asn/asn1c/ber_decoder.c b/src/asn/asn1c/ber_decoder.c
new file mode 100644
index 0000000..75d6016
--- /dev/null
+++ b/src/asn/asn1c/ber_decoder.c
@@ -0,0 +1,283 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+
+#undef ADVANCE
+#define ADVANCE(num_bytes) do { \
+ size_t num = num_bytes; \
+ ptr = ((const char *)ptr) + num; \
+ size -= num; \
+ consumed_myself += num; \
+ } while(0)
+#undef RETURN
+#define RETURN(_code) do { \
+ asn_dec_rval_t rval; \
+ rval.code = _code; \
+ if(opt_ctx) opt_ctx->step = step; /* Save context */ \
+ if(_code == RC_OK || opt_ctx) \
+ rval.consumed = consumed_myself; \
+ else \
+ rval.consumed = 0; /* Context-free */ \
+ return rval; \
+ } while(0)
+
+/*
+ * The BER decoder of any type.
+ */
+asn_dec_rval_t
+ber_decode(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/src/asn/asn1c/ber_decoder.h b/src/asn/asn1c/ber_decoder.h
new file mode 100644
index 0000000..1ac2a5e
--- /dev/null
+++ b/src/asn/asn1c/ber_decoder.h
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _BER_DECODER_H_
+#define _BER_DECODER_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s; /* Forward declaration */
+struct asn_codec_ctx_s; /* Forward declaration */
+
+/*
+ * The BER decoder of any type.
+ * This function may be invoked directly from the application.
+ * Decodes BER, DER and CER data (DER and CER are different subsets of BER).
+ *
+ * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding
+ * which is compliant with ber_decode().
+ */
+asn_dec_rval_t ber_decode(
+ const struct asn_codec_ctx_s *opt_codec_ctx,
+ const struct asn_TYPE_descriptor_s *type_descriptor,
+ void **struct_ptr, /* Pointer to a target structure's pointer */
+ const void *buffer, /* Data to be decoded */
+ size_t size /* Size of that buffer */
+);
+
+/*
+ * Type of generic function which decodes the byte stream into the structure.
+ */
+typedef asn_dec_rval_t(ber_type_decoder_f)(
+ const struct asn_codec_ctx_s *opt_codec_ctx,
+ const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr,
+ const void *buf_ptr, size_t size, int tag_mode);
+
+/*******************************
+ * INTERNALLY USEFUL FUNCTIONS *
+ *******************************/
+
+/*
+ * Check that all tags correspond to the type definition (as given in head).
+ * On return, last_length would contain either a non-negative length of the
+ * value part of the last TLV, or the negative number of expected
+ * "end of content" sequences. The number may only be negative if the
+ * head->last_tag_form is non-zero.
+ */
+asn_dec_rval_t ber_check_tags(
+ const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */
+ const struct asn_TYPE_descriptor_s *type_descriptor,
+ asn_struct_ctx_t *opt_ctx, /* saved decoding context */
+ const void *ptr, size_t size,
+ int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */
+ int last_tag_form, /* {-1,0:1}: any, primitive, constr */
+ ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BER_DECODER_H_ */
diff --git a/src/asn/asn1c/ber_tlv_length.c b/src/asn/asn1c/ber_tlv_length.c
new file mode 100644
index 0000000..0a0deec
--- /dev/null
+++ b/src/asn/asn1c/ber_tlv_length.c
@@ -0,0 +1,168 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+ssize_t
+ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
+ ber_tlv_len_t *len_r) {
+ const uint8_t *buf = (const uint8_t *)bufptr;
+ unsigned oct;
+
+ if(size == 0)
+ return 0; /* Want more */
+
+ oct = *(const uint8_t *)buf;
+ if((oct & 0x80) == 0) {
+ /*
+ * Short definite length.
+ */
+ *len_r = oct; /* & 0x7F */
+ return 1;
+ } else {
+ ber_tlv_len_t len;
+ size_t skipped;
+
+ if(_is_constructed && oct == 0x80) {
+ *len_r = -1; /* Indefinite length */
+ return 1;
+ }
+
+ if(oct == 0xff) {
+ /* Reserved in standard for future use. */
+ return -1;
+ }
+
+ oct &= 0x7F; /* Leave only the 7 LS bits */
+ for(len = 0, buf++, skipped = 1;
+ oct && (++skipped <= size); buf++, oct--) {
+
+ /* Verify that we won't overflow. */
+ if(!(len >> ((8 * sizeof(len)) - (8+1)))) {
+ len = (len << 8) | *buf;
+ } else {
+ /* Too large length value. */
+ return -1;
+ }
+ }
+
+ if(oct == 0) {
+ if(len < 0 || len > RSSIZE_MAX) {
+ /* Length value out of sane range. */
+ return -1;
+ }
+
+ *len_r = len;
+ return skipped;
+ }
+
+ return 0; /* Want more */
+ }
+
+}
+
+ssize_t
+ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx,
+ int _is_constructed, const void *ptr, size_t size) {
+ ber_tlv_len_t vlen; /* Length of V in TLV */
+ ssize_t tl; /* Length of L in TLV */
+ ssize_t ll; /* Length of L in TLV */
+ size_t skip;
+
+ /*
+ * Make sure we didn't exceed the maximum stack size.
+ */
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ return -1;
+
+ /*
+ * Determine the size of L in TLV.
+ */
+ ll = ber_fetch_length(_is_constructed, ptr, size, &vlen);
+ if(ll <= 0) return ll;
+
+ /*
+ * Definite length.
+ */
+ if(vlen >= 0) {
+ skip = ll + vlen;
+ if(skip > size)
+ return 0; /* Want more */
+ return skip;
+ }
+
+ /*
+ * Indefinite length!
+ */
+ ASN_DEBUG("Skipping indefinite length");
+ for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) {
+ ber_tlv_tag_t tag;
+
+ /* Fetch the tag */
+ tl = ber_fetch_tag(ptr, size, &tag);
+ if(tl <= 0) return tl;
+
+ ll = ber_skip_length(opt_codec_ctx,
+ BER_TLV_CONSTRUCTED(ptr),
+ ((const char *)ptr) + tl, size - tl);
+ if(ll <= 0) return ll;
+
+ skip += tl + ll;
+
+ /*
+ * This may be the end of the indefinite length structure,
+ * two consecutive 0 octets.
+ * Check if it is true.
+ */
+ if(((const uint8_t *)ptr)[0] == 0
+ && ((const uint8_t *)ptr)[1] == 0)
+ return skip;
+
+ ptr = ((const char *)ptr) + tl + ll;
+ size -= tl + ll;
+ }
+
+ /* UNREACHABLE */
+}
+
+size_t
+der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) {
+ size_t required_size; /* Size of len encoding */
+ uint8_t *buf = (uint8_t *)bufp;
+ uint8_t *end;
+ int i;
+
+ if(len <= 127) {
+ /* Encoded in 1 octet */
+ if(size) *buf = (uint8_t)len;
+ return 1;
+ }
+
+ /*
+ * Compute the size of the subsequent bytes.
+ */
+ for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) {
+ if(len >> i)
+ required_size++;
+ else
+ break;
+ }
+
+ if(size <= required_size)
+ return required_size + 1;
+
+ *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */
+
+ /*
+ * Produce the len encoding, space permitting.
+ */
+ end = buf + required_size;
+ for(i -= 8; buf < end; i -= 8, buf++)
+ *buf = (uint8_t)(len >> i);
+
+ return required_size + 1;
+}
+
diff --git a/src/asn/asn1c/ber_tlv_length.h b/src/asn/asn1c/ber_tlv_length.h
new file mode 100644
index 0000000..d1e4d48
--- /dev/null
+++ b/src/asn/asn1c/ber_tlv_length.h
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _BER_TLV_LENGTH_H_
+#define _BER_TLV_LENGTH_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ssize_t ber_tlv_len_t;
+
+/*
+ * This function tries to fetch the length of the BER TLV value and place it
+ * in *len_r.
+ * RETURN VALUES:
+ * 0: More data expected than bufptr contains.
+ * -1: Fatal error deciphering length.
+ * >0: Number of bytes used from bufptr.
+ * On return with >0, len_r is constrained as -1..MAX, where -1 mean
+ * that the value is of indefinite length.
+ */
+ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
+ ber_tlv_len_t *len_r);
+
+/*
+ * This function expects bufptr to be positioned over L in TLV.
+ * It returns number of bytes occupied by L and V together, suitable
+ * for skipping. The function properly handles indefinite length.
+ * RETURN VALUES:
+ * Standard {-1,0,>0} convention.
+ */
+ssize_t ber_skip_length(
+ const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */
+ int _is_constructed, const void *bufptr, size_t size);
+
+/*
+ * This function serializes the length (L from TLV) in DER format.
+ * It always returns number of bytes necessary to represent the length,
+ * it is a caller's responsibility to check the return value
+ * against the supplied buffer's size.
+ */
+size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BER_TLV_LENGTH_H_ */
diff --git a/src/asn/asn1c/ber_tlv_tag.c b/src/asn/asn1c/ber_tlv_tag.c
new file mode 100644
index 0000000..4a7d732
--- /dev/null
+++ b/src/asn/asn1c/ber_tlv_tag.c
@@ -0,0 +1,144 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+ssize_t
+ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
+ ber_tlv_tag_t val;
+ ber_tlv_tag_t tclass;
+ size_t skipped;
+
+ if(size == 0)
+ return 0;
+
+ val = *(const uint8_t *)ptr;
+ tclass = (val >> 6);
+ if((val &= 0x1F) != 0x1F) {
+ /*
+ * Simple form: everything encoded in a single octet.
+ * Tag Class is encoded using two least significant bits.
+ */
+ *tag_r = (val << 2) | tclass;
+ return 1;
+ }
+
+ /*
+ * Each octet contains 7 bits of useful information.
+ * The MSB is 0 if it is the last octet of the tag.
+ */
+ for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2;
+ skipped <= size;
+ ptr = ((const char *)ptr) + 1, skipped++) {
+ unsigned int oct = *(const uint8_t *)ptr;
+ if(oct & 0x80) {
+ val = (val << 7) | (oct & 0x7F);
+ /*
+ * Make sure there are at least 9 bits spare
+ * at the MS side of a value.
+ */
+ if(val >> ((8 * sizeof(val)) - 9)) {
+ /*
+ * We would not be able to accomodate
+ * any more tag bits.
+ */
+ return -1;
+ }
+ } else {
+ val = (val << 7) | oct;
+ *tag_r = (val << 2) | tclass;
+ return skipped;
+ }
+ }
+
+ return 0; /* Want more */
+}
+
+
+ssize_t
+ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) {
+ char buf[sizeof("[APPLICATION ]") + 32];
+ ssize_t ret;
+
+ ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf));
+ if(ret >= (ssize_t)sizeof(buf) || ret < 2) {
+ errno = EPERM;
+ return -1;
+ }
+
+ return fwrite(buf, 1, ret, f);
+}
+
+ssize_t
+ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) {
+ 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/src/asn/asn1c/ber_tlv_tag.h b/src/asn/asn1c/ber_tlv_tag.h
new file mode 100644
index 0000000..ce227ad
--- /dev/null
+++ b/src/asn/asn1c/ber_tlv_tag.h
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _BER_TLV_TAG_H_
+#define _BER_TLV_TAG_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum asn_tag_class {
+ ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */
+ ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */
+ ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */
+ ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */
+};
+typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */
+
+/*
+ * Tag class is encoded together with tag value for optimization purposes.
+ */
+#define BER_TAG_CLASS(tag) ((tag) & 0x3)
+#define BER_TAG_VALUE(tag) ((tag) >> 2)
+#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0)
+
+#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2))
+
+/*
+ * Several functions for printing the TAG in the canonical form
+ * (i.e. "[PRIVATE 0]").
+ * Return values correspond to their libc counterparts (if any).
+ */
+ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen);
+ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *);
+char *ber_tlv_tag_string(ber_tlv_tag_t tag);
+
+
+/*
+ * This function tries to fetch the tag from the input stream.
+ * RETURN VALUES:
+ * 0: More data expected than bufptr contains.
+ * -1: Fatal error deciphering tag.
+ * >0: Number of bytes used from bufptr. tag_r will contain the tag.
+ */
+ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
+
+/*
+ * This function serializes the tag (T from TLV) in BER format.
+ * It always returns number of bytes necessary to represent the tag,
+ * it is a caller's responsibility to check the return value
+ * against the supplied buffer's size.
+ */
+size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BER_TLV_TAG_H_ */
diff --git a/src/asn/asn1c/constr_CHOICE.c b/src/asn/asn1c/constr_CHOICE.c
new file mode 100644
index 0000000..402b6be
--- /dev/null
+++ b/src/asn/asn1c/constr_CHOICE.c
@@ -0,0 +1,1509 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * Number of bytes left for this structure.
+ * (ctx->left) indicates the number of bytes _transferred_ for the structure.
+ * (size) contains the number of bytes in the buffer passed.
+ */
+#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left)
+
+/*
+ * If the subprocessor function returns with an indication that it wants
+ * more data, it may well be a fatal decoding problem, because the
+ * size is constrained by the 's L, even if the buffer size allows
+ * reading more data.
+ * For example, consider the buffer containing the following TLVs:
+ * ...
+ * The TLV length clearly indicates that one byte is expected in V, but
+ * if the V processor returns with "want more data" even if the buffer
+ * contains way more data than the V processor have seen.
+ */
+#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size)
+
+/*
+ * This macro "eats" the part of the buffer which is definitely "consumed",
+ * i.e. was correctly converted into local representation or rightfully skipped.
+ */
+#undef ADVANCE
+#define ADVANCE(num_bytes) do { \
+ size_t num = num_bytes; \
+ ptr = ((const char *)ptr) + num;\
+ size -= num; \
+ if(ctx->left >= 0) \
+ ctx->left -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+/*
+ * Switch to the next phase of parsing.
+ */
+#undef NEXT_PHASE
+#define NEXT_PHASE(ctx) do { \
+ ctx->phase++; \
+ ctx->step = 0; \
+ } while(0)
+
+/*
+ * Return a standardized complex structure.
+ */
+#undef RETURN
+#define RETURN(_code) do { \
+ rval.code = _code; \
+ rval.consumed = consumed_myself;\
+ return rval; \
+ } while(0)
+
+/*
+ * See the definitions.
+ */
+static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off,
+ unsigned size);
+static void _set_present_idx(void *sptr, unsigned offset, unsigned size,
+ unsigned pres);
+static const void *_get_member_ptr(const asn_TYPE_descriptor_t *,
+ const void *sptr, asn_TYPE_member_t **elm,
+ unsigned *present);
+
+/*
+ * Tags are canonically sorted in the tag to member table.
+ */
+static int
+_search4tag(const void *ap, const void *bp) {
+ const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap;
+ const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp;
+
+ int a_class = BER_TAG_CLASS(a->el_tag);
+ int b_class = BER_TAG_CLASS(b->el_tag);
+
+ if(a_class == b_class) {
+ ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag);
+ ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag);
+
+ if(a_value == b_value)
+ return 0;
+ else if(a_value < b_value)
+ return -1;
+ else
+ return 1;
+ } else if(a_class < b_class) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+/*
+ * The decoder of the CHOICE type.
+ */
+asn_dec_rval_t
+CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **struct_ptr,
+ const void *ptr, size_t size, int tag_mode) {
+ /*
+ * Bring closer parts of structure description.
+ */
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_TYPE_member_t *elements = td->elements;
+
+ /*
+ * Parts of the structure being constructed.
+ */
+ void *st = *struct_ptr; /* Target structure. */
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ ber_tlv_tag_t tlv_tag; /* T from TLV */
+ ssize_t tag_len; /* Length of TLV's T */
+ asn_dec_rval_t rval; /* Return code from subparsers */
+
+ ssize_t consumed_myself = 0; /* Consumed bytes from ptr */
+
+ ASN_DEBUG("Decoding %s as CHOICE", td->name);
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(st == 0) {
+ st = *struct_ptr = CALLOC(1, specs->struct_size);
+ if(st == 0) {
+ RETURN(RC_FAIL);
+ }
+ }
+
+ /*
+ * Restore parsing context.
+ */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+ /*
+ * Start to parse where left previously
+ */
+ switch(ctx->phase) {
+ case 0:
+ /*
+ * PHASE 0.
+ * Check that the set of tags associated with given structure
+ * perfectly fits our expectations.
+ */
+
+ if(tag_mode || td->tags_count) {
+ rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size,
+ tag_mode, -1, &ctx->left, 0);
+ if(rval.code != RC_OK) {
+ ASN_DEBUG("%s tagging check failed: %d",
+ td->name, rval.code);
+ return rval;
+ }
+
+ if(ctx->left >= 0) {
+ /* ?Substracted below! */
+ ctx->left += rval.consumed;
+ }
+ ADVANCE(rval.consumed);
+ } else {
+ ctx->left = -1;
+ }
+
+ NEXT_PHASE(ctx);
+
+ ASN_DEBUG("Structure consumes %ld bytes, buffer %ld",
+ (long)ctx->left, (long)size);
+
+ /* Fall through */
+ case 1:
+ /*
+ * Fetch the T from TLV.
+ */
+ tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag);
+ ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len);
+ switch(tag_len) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ do {
+ const asn_TYPE_tag2member_t *t2m;
+ asn_TYPE_tag2member_t key;
+
+ key.el_tag = tlv_tag;
+ t2m = (const asn_TYPE_tag2member_t *)bsearch(&key,
+ specs->tag2el, specs->tag2el_count,
+ sizeof(specs->tag2el[0]), _search4tag);
+ if(t2m) {
+ /*
+ * Found the element corresponding to the tag.
+ */
+ NEXT_PHASE(ctx);
+ ctx->step = t2m->el_no;
+ break;
+ } else if(specs->ext_start == -1) {
+ ASN_DEBUG("Unexpected tag %s "
+ "in non-extensible CHOICE %s",
+ ber_tlv_tag_string(tlv_tag), td->name);
+ RETURN(RC_FAIL);
+ } else {
+ /* Skip this tag */
+ ssize_t skip;
+
+ ASN_DEBUG("Skipping unknown tag %s",
+ ber_tlv_tag_string(tlv_tag));
+
+ skip = ber_skip_length(opt_codec_ctx,
+ BER_TLV_CONSTRUCTED(ptr),
+ (const char *)ptr + tag_len,
+ LEFT - tag_len);
+
+ switch(skip) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ ADVANCE(skip + tag_len);
+ RETURN(RC_OK);
+ }
+ } while(0);
+
+ case 2:
+ /*
+ * PHASE 2.
+ * Read in the element.
+ */
+ do {
+ asn_TYPE_member_t *elm;/* CHOICE's element */
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+
+ elm = &elements[ctx->step];
+
+ /*
+ * Compute the position of the member inside a structure,
+ * and also a type of containment (it may be contained
+ * as pointer or using inline inclusion).
+ */
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ /*
+ * A pointer to a pointer
+ * holding the start of the structure
+ */
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+ /* Set presence to be able to free it properly at any time */
+ _set_present_idx(st, specs->pres_offset,
+ specs->pres_size, ctx->step + 1);
+ /*
+ * Invoke the member fetch routine according to member's type
+ */
+ rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type,
+ memb_ptr2, ptr, LEFT, elm->tag_mode);
+ switch(rval.code) {
+ case RC_OK:
+ break;
+ case RC_WMORE: /* More data expected */
+ if(!SIZE_VIOLATION) {
+ ADVANCE(rval.consumed);
+ RETURN(RC_WMORE);
+ }
+ RETURN(RC_FAIL);
+ case RC_FAIL: /* Fatal error */
+ RETURN(rval.code);
+ } /* switch(rval) */
+
+ ADVANCE(rval.consumed);
+ } while(0);
+
+ NEXT_PHASE(ctx);
+
+ /* Fall through */
+ case 3:
+ ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d",
+ td->name, (long)ctx->left, (long)size,
+ tag_mode, td->tags_count);
+
+ if(ctx->left > 0) {
+ /*
+ * The type must be fully decoded
+ * by the CHOICE member-specific decoder.
+ */
+ RETURN(RC_FAIL);
+ }
+
+ if(ctx->left == -1
+ && !(tag_mode || td->tags_count)) {
+ /*
+ * This is an untagged CHOICE.
+ * It doesn't contain nothing
+ * except for the member itself, including all its tags.
+ * The decoding is completed.
+ */
+ NEXT_PHASE(ctx);
+ break;
+ }
+
+ /*
+ * Read in the "end of data chunks"'s.
+ */
+ while(ctx->left < 0) {
+ ssize_t tl;
+
+ tl = ber_fetch_tag(ptr, LEFT, &tlv_tag);
+ switch(tl) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ /*
+ * Expected <0><0>...
+ */
+ if(((const uint8_t *)ptr)[0] == 0) {
+ if(LEFT < 2) {
+ if(SIZE_VIOLATION)
+ RETURN(RC_FAIL);
+ else
+ RETURN(RC_WMORE);
+ } else if(((const uint8_t *)ptr)[1] == 0) {
+ /*
+ * Correctly finished with <0><0>.
+ */
+ ADVANCE(2);
+ ctx->left++;
+ continue;
+ }
+ } else {
+ ASN_DEBUG("Unexpected continuation in %s",
+ td->name);
+ RETURN(RC_FAIL);
+ }
+
+ /* UNREACHABLE */
+ }
+
+ NEXT_PHASE(ctx);
+ case 4:
+ /* No meaningful work here */
+ break;
+ }
+
+ RETURN(RC_OK);
+}
+
+asn_enc_rval_t
+CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_TYPE_member_t *elm; /* CHOICE element */
+ asn_enc_rval_t erval;
+ const void *memb_ptr;
+ size_t computed_size = 0;
+ unsigned present;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("%s %s as CHOICE",
+ cb?"Encoding":"Estimating", td->name);
+
+ present = _fetch_present_idx(sptr,
+ specs->pres_offset, specs->pres_size);
+
+ /*
+ * If the structure was not initialized, it cannot be encoded:
+ * can't deduce what to encode in the choice type.
+ */
+ if(present == 0 || present > td->elements_count) {
+ if(present == 0 && td->elements_count == 0) {
+ /* The CHOICE is empty?! */
+ erval.encoded = 0;
+ ASN__ENCODED_OK(erval);
+ }
+ ASN__ENCODE_FAILED;
+ }
+
+ /*
+ * Seek over the present member of the structure.
+ */
+ elm = &td->elements[present-1];
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr =
+ *(const void *const *)((const char *)sptr + elm->memb_offset);
+ if(memb_ptr == 0) {
+ if(elm->optional) {
+ erval.encoded = 0;
+ ASN__ENCODED_OK(erval);
+ }
+ /* Mandatory element absent */
+ ASN__ENCODE_FAILED;
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ /*
+ * If the CHOICE itself is tagged EXPLICIT:
+ * T ::= [2] EXPLICIT CHOICE { ... }
+ * Then emit the appropriate tags.
+ */
+ if(tag_mode == 1 || td->tags_count) {
+ /*
+ * For this, we need to pre-compute the member.
+ */
+ ssize_t ret;
+
+ /* Encode member with its tag */
+ erval = elm->type->op->der_encoder(elm->type, memb_ptr,
+ elm->tag_mode, elm->tag, 0, 0);
+ if(erval.encoded == -1)
+ return erval;
+
+ /* Encode CHOICE with parent or my own tag */
+ ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag,
+ cb, app_key);
+ if(ret == -1)
+ ASN__ENCODE_FAILED;
+ computed_size += ret;
+ }
+
+ /*
+ * Encode the single underlying member.
+ */
+ erval = elm->type->op->der_encoder(elm->type, memb_ptr,
+ elm->tag_mode, elm->tag, cb, app_key);
+ if(erval.encoded == -1)
+ return erval;
+
+ ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)",
+ (long)erval.encoded, (long)computed_size);
+
+ erval.encoded += computed_size;
+
+ return erval;
+}
+
+ber_tlv_tag_t
+CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) {
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ unsigned present;
+
+ assert(tag_mode == 0); (void)tag_mode;
+ assert(tag == 0); (void)tag;
+
+ /*
+ * Figure out which CHOICE element is encoded.
+ */
+ present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size);
+
+ if(present > 0 && present <= td->elements_count) {
+ const asn_TYPE_member_t *elm = &td->elements[present-1];
+ const void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(const void * const *)
+ ((const char *)ptr + elm->memb_offset);
+ } else {
+ memb_ptr = (const void *)
+ ((const char *)ptr + elm->memb_offset);
+ }
+
+ return asn_TYPE_outmost_tag(elm->type, memb_ptr,
+ elm->tag_mode, elm->tag);
+ } else {
+ return (ber_tlv_tag_t)-1;
+ }
+}
+
+int
+CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ unsigned present;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /*
+ * Figure out which CHOICE element is encoded.
+ */
+ present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size);
+ if(present > 0 && present <= td->elements_count) {
+ asn_TYPE_member_t *elm = &td->elements[present-1];
+ const void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) {
+ if(elm->optional)
+ return 0;
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: mandatory CHOICE element %s absent (%s:%d)",
+ td->name, elm->name, __FILE__, __LINE__);
+ return -1;
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ if(elm->encoding_constraints.general_constraints) {
+ return elm->encoding_constraints.general_constraints(elm->type, memb_ptr,
+ ctfailcb, app_key);
+ } else {
+ return elm->type->encoding_constraints.general_constraints(elm->type,
+ memb_ptr, ctfailcb, app_key);
+ }
+ } else {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: no CHOICE element given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+#undef XER_ADVANCE
+#define XER_ADVANCE(num_bytes) do { \
+ size_t num = num_bytes; \
+ buf_ptr = (const void *)(((const char *)buf_ptr) + num); \
+ size -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+/*
+ * Decode the XER (XML) data.
+ */
+asn_dec_rval_t
+CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **struct_ptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ /*
+ * Bring closer parts of structure description.
+ */
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
+
+ /*
+ * Parts of the structure being constructed.
+ */
+ void *st = *struct_ptr; /* Target structure. */
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ asn_dec_rval_t rval; /* Return value of a decoder */
+ ssize_t consumed_myself = 0; /* Consumed bytes from ptr */
+ size_t edx; /* Element index */
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(st == 0) {
+ st = *struct_ptr = CALLOC(1, specs->struct_size);
+ if(st == 0) RETURN(RC_FAIL);
+ }
+
+ /*
+ * Restore parsing context.
+ */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+ if(ctx->phase == 0 && !*xml_tag)
+ ctx->phase = 1; /* Skip the outer tag checking phase */
+
+ /*
+ * Phases of XER/XML processing:
+ * Phase 0: Check that the opening tag matches our expectations.
+ * Phase 1: Processing body and reacting on closing tag.
+ * Phase 2: Processing inner type.
+ * Phase 3: Only waiting for closing tag.
+ * Phase 4: Skipping unknown extensions.
+ * Phase 5: PHASED OUT
+ */
+ for(edx = ctx->step; ctx->phase <= 4;) {
+ pxer_chunk_type_e ch_type; /* XER chunk type */
+ ssize_t ch_size; /* Chunk size */
+ xer_check_tag_e tcv; /* Tag check value */
+ asn_TYPE_member_t *elm;
+
+ /*
+ * Go inside the member.
+ */
+ if(ctx->phase == 2) {
+ asn_dec_rval_t tmprval;
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+ unsigned old_present;
+
+ elm = &td->elements[edx];
+
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st
+ + elm->memb_offset);
+ } else {
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+
+ /* Start/Continue decoding the inner member */
+ tmprval = elm->type->op->xer_decoder(opt_codec_ctx,
+ elm->type, memb_ptr2, elm->name,
+ buf_ptr, size);
+ XER_ADVANCE(tmprval.consumed);
+ ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d",
+ elm->type->name, tmprval.code);
+ old_present = _fetch_present_idx(st,
+ specs->pres_offset, specs->pres_size);
+ assert(old_present == 0 || old_present == edx + 1);
+ /* Record what we've got */
+ _set_present_idx(st,
+ specs->pres_offset, specs->pres_size, edx + 1);
+ if(tmprval.code != RC_OK)
+ RETURN(tmprval.code);
+ ctx->phase = 3;
+ /* Fall through */
+ }
+
+ /* No need to wait for closing tag; special mode. */
+ if(ctx->phase == 3 && !*xml_tag) {
+ ctx->phase = 5; /* Phase out */
+ RETURN(RC_OK);
+ }
+
+ /*
+ * Get the next part of the XML stream.
+ */
+ ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type);
+ if(ch_size == -1) {
+ RETURN(RC_FAIL);
+ } else {
+ switch(ch_type) {
+ case PXER_WMORE:
+ RETURN(RC_WMORE);
+ case PXER_COMMENT: /* Got XML comment */
+ case PXER_TEXT: /* Ignore free-standing text */
+ XER_ADVANCE(ch_size); /* Skip silently */
+ continue;
+ case PXER_TAG:
+ break; /* Check the rest down there */
+ }
+ }
+
+ tcv = xer_check_tag(buf_ptr, ch_size, xml_tag);
+ ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d",
+ ch_size>0?((const uint8_t *)buf_ptr)[0]:'?',
+ ch_size>1?((const uint8_t *)buf_ptr)[1]:'?',
+ ch_size>2?((const uint8_t *)buf_ptr)[2]:'?',
+ ch_size>3?((const uint8_t *)buf_ptr)[3]:'?',
+ xml_tag, tcv);
+
+ /* Skip the extensions section */
+ if(ctx->phase == 4) {
+ ASN_DEBUG("skip_unknown(%d, %ld)",
+ tcv, (long)ctx->left);
+ switch(xer_skip_unknown(tcv, &ctx->left)) {
+ case -1:
+ ctx->phase = 5;
+ RETURN(RC_FAIL);
+ case 1:
+ ctx->phase = 3;
+ /* Fall through */
+ case 0:
+ XER_ADVANCE(ch_size);
+ continue;
+ case 2:
+ ctx->phase = 3;
+ break;
+ }
+ }
+
+ switch(tcv) {
+ case XCT_BOTH:
+ break; /* No CHOICE? */
+ case XCT_CLOSING:
+ if(ctx->phase != 3)
+ break;
+ XER_ADVANCE(ch_size);
+ ctx->phase = 5; /* Phase out */
+ RETURN(RC_OK);
+ case XCT_OPENING:
+ if(ctx->phase == 0) {
+ XER_ADVANCE(ch_size);
+ ctx->phase = 1; /* Processing body phase */
+ continue;
+ }
+ /* Fall through */
+ case XCT_UNKNOWN_OP:
+ case XCT_UNKNOWN_BO:
+
+ if(ctx->phase != 1)
+ break; /* Really unexpected */
+
+ /*
+ * Search which inner member corresponds to this tag.
+ */
+ for(edx = 0; edx < td->elements_count; edx++) {
+ elm = &td->elements[edx];
+ tcv = xer_check_tag(buf_ptr,ch_size,elm->name);
+ switch(tcv) {
+ case XCT_BOTH:
+ case XCT_OPENING:
+ /*
+ * Process this member.
+ */
+ ctx->step = edx;
+ ctx->phase = 2;
+ break;
+ case XCT_UNKNOWN_OP:
+ case XCT_UNKNOWN_BO:
+ continue;
+ default:
+ edx = td->elements_count;
+ break; /* Phase out */
+ }
+ break;
+ }
+ if(edx != td->elements_count)
+ continue;
+
+ /* It is expected extension */
+ if(specs->ext_start != -1) {
+ ASN_DEBUG("Got anticipated extension");
+ /*
+ * Check for (XCT_BOTH or XCT_UNKNOWN_BO)
+ * By using a mask. Only record a pure
+ * tags.
+ */
+ if(tcv & XCT_CLOSING) {
+ /* Found without body */
+ ctx->phase = 3; /* Terminating */
+ } else {
+ ctx->left = 1;
+ ctx->phase = 4; /* Skip ...'s */
+ }
+ XER_ADVANCE(ch_size);
+ continue;
+ }
+
+ /* Fall through */
+ default:
+ break;
+ }
+
+ ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]"
+ " (ph=%d, tag=%s)",
+ ch_size>0?((const uint8_t *)buf_ptr)[0]:'?',
+ ch_size>1?((const uint8_t *)buf_ptr)[1]:'?',
+ ch_size>2?((const uint8_t *)buf_ptr)[2]:'?',
+ ch_size>3?((const uint8_t *)buf_ptr)[3]:'?',
+ td->name, ctx->phase, xml_tag);
+ break;
+ }
+
+ ctx->phase = 5; /* Phase out, just in case */
+ RETURN(RC_FAIL);
+}
+
+
+asn_enc_rval_t
+CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ unsigned present;
+
+ if(!sptr)
+ ASN__ENCODE_FAILED;
+
+ /*
+ * Figure out which CHOICE element is encoded.
+ */
+ present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size);
+
+ if(present == 0 || present > td->elements_count) {
+ ASN__ENCODE_FAILED;
+ } else {
+ asn_enc_rval_t tmper;
+ asn_TYPE_member_t *elm = &td->elements[present-1];
+ const void *memb_ptr;
+ const char *mname = elm->name;
+ unsigned int mlen = strlen(mname);
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr =
+ *(const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) ASN__ENCODE_FAILED;
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ er.encoded = 0;
+
+ if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel);
+ ASN__CALLBACK3("<", 1, mname, mlen, ">", 1);
+
+ tmper = elm->type->op->xer_encoder(elm->type, memb_ptr,
+ ilevel + 1, flags, cb, app_key);
+ if(tmper.encoded == -1) return tmper;
+ er.encoded += tmper.encoded;
+
+ ASN__CALLBACK3("", 2, mname, mlen, ">", 1);
+ }
+
+ if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1);
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ ASN__ENCODE_FAILED;
+}
+
+asn_dec_rval_t
+CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_dec_rval_t rv;
+ const asn_per_constraint_t *ct;
+ asn_TYPE_member_t *elm; /* CHOICE's element */
+ void *memb_ptr;
+ void **memb_ptr2;
+ void *st = *sptr;
+ int value;
+
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ ASN__DECODE_FAILED;
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(!st) {
+ st = *sptr = CALLOC(1, specs->struct_size);
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value;
+ else ct = 0;
+
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ value = per_get_few_bits(pd, 1);
+ if(value < 0) ASN__DECODE_STARVED;
+ if(value) ct = 0; /* Not restricted */
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ value = per_get_few_bits(pd, ct->range_bits);
+ if(value < 0) ASN__DECODE_STARVED;
+ ASN_DEBUG("CHOICE %s got index %d in range %d",
+ td->name, value, ct->range_bits);
+ if(value > ct->upper_bound)
+ ASN__DECODE_FAILED;
+ } else {
+ if(specs->ext_start == -1)
+ ASN__DECODE_FAILED;
+ value = uper_get_nsnnwn(pd);
+ if(value < 0) ASN__DECODE_STARVED;
+ value += specs->ext_start;
+ if((unsigned)value >= td->elements_count)
+ ASN__DECODE_FAILED;
+ }
+
+ /* Adjust if canonical order is different from natural order */
+ if(specs->from_canonical_order) {
+ ASN_DEBUG("CHOICE presence from wire %d", value);
+ value = specs->from_canonical_order[value];
+ ASN_DEBUG("CHOICE presence index effective %d", value);
+ }
+
+ /* Set presence to be able to free it later */
+ _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1);
+
+ elm = &td->elements[value];
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+ ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name);
+
+ if(ct && ct->range_bits >= 0) {
+ rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr2, pd);
+ } else {
+ rv = uper_open_type_get(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr2, pd);
+ }
+
+ if(rv.code != RC_OK)
+ ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d",
+ elm->name, td->name, rv.code);
+ return rv;
+}
+
+asn_enc_rval_t
+CHOICE_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_TYPE_member_t *elm; /* CHOICE's element */
+ const asn_per_constraint_t *ct;
+ const void *memb_ptr;
+ unsigned present;
+ int present_enc;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Encoding %s as CHOICE", td->name);
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ct = 0;
+
+ present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size);
+
+ /*
+ * If the structure was not initialized properly, it cannot be encoded:
+ * can't deduce what to encode in the choice type.
+ */
+ if(present == 0 || present > td->elements_count)
+ ASN__ENCODE_FAILED;
+ else
+ present--;
+
+ ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present);
+
+ /* Adjust if canonical order is different from natural order */
+ if(specs->to_canonical_order)
+ present_enc = specs->to_canonical_order[present];
+ else
+ present_enc = present;
+
+ if(ct && ct->range_bits >= 0) {
+ if(present_enc < ct->lower_bound
+ || present_enc > ct->upper_bound) {
+ if(ct->flags & APC_EXTENSIBLE) {
+ ASN_DEBUG(
+ "CHOICE member %d (enc %d) is an extension (%ld..%ld)",
+ present, present_enc, ct->lower_bound, ct->upper_bound);
+ if(per_put_few_bits(po, 1, 1))
+ ASN__ENCODE_FAILED;
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+ ct = 0;
+ }
+ }
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)",
+ present, present_enc, ct->lower_bound, ct->upper_bound);
+ if(per_put_few_bits(po, 0, 1))
+ ASN__ENCODE_FAILED;
+ }
+
+
+ elm = &td->elements[present];
+ ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present,
+ present_enc);
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr =
+ *(const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) ASN__ENCODE_FAILED;
+ } else {
+ memb_ptr = (const char *)sptr + elm->memb_offset;
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ if(per_put_few_bits(po, present_enc, ct->range_bits))
+ ASN__ENCODE_FAILED;
+
+ return elm->type->op->uper_encoder(
+ elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po);
+ } else {
+ asn_enc_rval_t rval;
+ if(specs->ext_start == -1) ASN__ENCODE_FAILED;
+ if(uper_put_nsnnwn(po, present_enc - specs->ext_start))
+ ASN__ENCODE_FAILED;
+ if(uper_open_type_put(elm->type,
+ elm->encoding_constraints.per_constraints,
+ memb_ptr, po))
+ ASN__ENCODE_FAILED;
+ rval.encoded = 0;
+ ASN__ENCODED_OK(rval);
+ }
+}
+
+asn_dec_rval_t
+CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_dec_rval_t rv;
+ const asn_per_constraint_t *ct;
+ asn_TYPE_member_t *elm; /* CHOICE's element */
+ void *memb_ptr;
+ void **memb_ptr2;
+ void *st = *sptr;
+ int value;
+
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ ASN__DECODE_FAILED;
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(!st) {
+ st = *sptr = CALLOC(1, specs->struct_size);
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ct = 0;
+
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ value = per_get_few_bits(pd, 1);
+ if(value < 0) ASN__DECODE_STARVED;
+ if(value) ct = 0; /* Not restricted */
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ value = per_get_few_bits(pd, ct->range_bits);
+ if(value < 0) ASN__DECODE_STARVED;
+ ASN_DEBUG("CHOICE %s got index %d in range %d",
+ td->name, value, ct->range_bits);
+ if(value > ct->upper_bound)
+ ASN__DECODE_FAILED;
+ } else {
+ if(specs->ext_start == -1)
+ ASN__DECODE_FAILED;
+ value = uper_get_nsnnwn(pd);
+ if(value < 0) ASN__DECODE_STARVED;
+ value += specs->ext_start;
+ if((unsigned)value >= td->elements_count)
+ ASN__DECODE_FAILED;
+ }
+
+ /* Adjust if canonical order is different from natural order */
+ if(specs->from_canonical_order)
+ value = specs->from_canonical_order[value];
+
+ /* Set presence to be able to free it later */
+ _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1);
+
+ elm = &td->elements[value];
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+ ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name);
+
+ if(ct && ct->range_bits >= 0) {
+ rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr2, pd);
+ } else {
+ rv = uper_open_type_get(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr2, pd);
+ }
+
+ if(rv.code != RC_OK)
+ ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d",
+ elm->name, td->name, rv.code);
+ return rv;
+}
+
+asn_enc_rval_t
+CHOICE_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elm; /* CHOICE's element */
+ const asn_per_constraint_t *ct;
+ const void *memb_ptr;
+ int present;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name);
+
+ if(constraints) ct = &constraints->value;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->value;
+ else ct = 0;
+
+ present = _fetch_present_idx(sptr,
+ specs->pres_offset, specs->pres_size);
+
+ /*
+ * If the structure was not initialized properly, it cannot be encoded:
+ * can't deduce what to encode in the choice type.
+ */
+ if(present <= 0 || (unsigned)present > td->elements_count)
+ ASN__ENCODE_FAILED;
+ else
+ present--;
+
+ /* Adjust if canonical order is different from natural order */
+ if(specs->to_canonical_order)
+ present = specs->to_canonical_order[present];
+
+ ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present);
+
+ if(ct && ct->range_bits >= 0) {
+ if(present < ct->lower_bound
+ || present > ct->upper_bound) {
+ if(ct->flags & APC_EXTENSIBLE) {
+ if(per_put_few_bits(po, 1, 1))
+ ASN__ENCODE_FAILED;
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+ ct = 0;
+ }
+ }
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ if(per_put_few_bits(po, 0, 1))
+ ASN__ENCODE_FAILED;
+ }
+
+ elm = &td->elements[present];
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) ASN__ENCODE_FAILED;
+ } else {
+ memb_ptr = (const char *)sptr + elm->memb_offset;
+ }
+
+ if(ct && ct->range_bits >= 0) {
+ if(per_put_few_bits(po, present, ct->range_bits))
+ ASN__ENCODE_FAILED;
+
+ return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints,
+ memb_ptr, po);
+ } else {
+ asn_enc_rval_t rval;
+ if(specs->ext_start == -1)
+ ASN__ENCODE_FAILED;
+ if(aper_put_nsnnwn(po, ct->range_bits, present - specs->ext_start))
+ ASN__ENCODE_FAILED;
+ if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints,
+ memb_ptr, po))
+ ASN__ENCODE_FAILED;
+ rval.encoded = 0;
+ ASN__ENCODED_OK(rval);
+ }
+}
+
+int
+CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics;
+ unsigned present;
+
+ if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0;
+
+ /*
+ * Figure out which CHOICE element is encoded.
+ */
+ present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size);
+
+ /*
+ * Print that element.
+ */
+ if(present > 0 && present <= td->elements_count) {
+ asn_TYPE_member_t *elm = &td->elements[present-1];
+ const void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0;
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ /* Print member's name and stuff */
+ if(0) {
+ if(cb(elm->name, strlen(elm->name), app_key) < 0
+ || cb(": ", 2, app_key) < 0)
+ return -1;
+ }
+
+ return elm->type->op->print_struct(elm->type, memb_ptr, ilevel,
+ cb, app_key);
+ } else {
+ return (cb("", 8, app_key) < 0) ? -1 : 0;
+ }
+}
+
+void
+CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr,
+ enum asn_struct_free_method method) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ unsigned present;
+
+ if(!td || !ptr)
+ return;
+
+ ASN_DEBUG("Freeing %s as CHOICE", td->name);
+
+ /*
+ * Figure out which CHOICE element is encoded.
+ */
+ present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size);
+
+ /*
+ * Free that element.
+ */
+ if(present > 0 && present <= td->elements_count) {
+ asn_TYPE_member_t *elm = &td->elements[present-1];
+ void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(void **)((char *)ptr + elm->memb_offset);
+ if(memb_ptr)
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
+ } else {
+ memb_ptr = (void *)((char *)ptr + elm->memb_offset);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
+ }
+ }
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(ptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(ptr, 0, specs->struct_size);
+ break;
+ }
+}
+
+
+/*
+ * The following functions functions offer protection against -fshort-enums,
+ * compatible with little- and big-endian machines.
+ * If assertion is triggered, either disable -fshort-enums, or add an entry
+ * here with the ->pres_size of your target stracture.
+ * Unless the target structure is packed, the ".present" member
+ * is guaranteed to be aligned properly. ASN.1 compiler itself does not
+ * produce packed code.
+ */
+static unsigned
+_fetch_present_idx(const void *struct_ptr, unsigned pres_offset,
+ unsigned pres_size) {
+ const void *present_ptr;
+ unsigned present;
+
+ present_ptr = ((const char *)struct_ptr) + pres_offset;
+
+ switch(pres_size) {
+ case sizeof(int): present = *(const unsigned int *)present_ptr; break;
+ case sizeof(short): present = *(const unsigned short *)present_ptr; break;
+ case sizeof(char): present = *(const unsigned char *)present_ptr; break;
+ default:
+ /* ANSI C mandates enum to be equivalent to integer */
+ assert(pres_size != sizeof(int));
+ return 0; /* If not aborted, pass back safe value */
+ }
+
+ return present;
+}
+
+static void
+_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size,
+ unsigned present) {
+ void *present_ptr;
+ present_ptr = ((char *)struct_ptr) + pres_offset;
+
+ switch(pres_size) {
+ case sizeof(int): *(unsigned int *)present_ptr = present; break;
+ case sizeof(short): *(unsigned short *)present_ptr = present; break;
+ case sizeof(char): *(unsigned char *)present_ptr = present; break;
+ default:
+ /* ANSI C mandates enum to be equivalent to integer */
+ assert(pres_size != sizeof(int));
+ }
+}
+
+static const void *
+_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_TYPE_member_t **elm_ptr, unsigned *present_out) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ unsigned present;
+
+ if(!sptr) {
+ *elm_ptr = NULL;
+ *present_out = 0;
+ return NULL;
+ }
+
+ /*
+ * Figure out which CHOICE element is encoded.
+ */
+ present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size);
+ *present_out = present;
+
+ /*
+ * The presence index is intentionally 1-based to avoid
+ * treating zeroed structure as a valid one.
+ */
+ if(present > 0 && present <= td->elements_count) {
+ asn_TYPE_member_t *const elm = &td->elements[present - 1];
+ const void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr =
+ *(const void *const *)((const char *)sptr + elm->memb_offset);
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+ *elm_ptr = elm;
+ return memb_ptr;
+ } else {
+ *elm_ptr = NULL;
+ return NULL;
+ }
+
+}
+
+int
+CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) {
+ asn_TYPE_member_t *aelm;
+ asn_TYPE_member_t *belm;
+ unsigned apresent = 0;
+ unsigned bpresent = 0;
+ const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent);
+ const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent);
+
+ if(amember && bmember) {
+ if(apresent == bpresent) {
+ assert(aelm == belm);
+ return aelm->type->op->compare_struct(aelm->type, amember, bmember);
+ } else if(apresent < bpresent) {
+ return -1;
+ } else {
+ return 1;
+ }
+ } else if(!amember) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+/*
+ * Return the 1-based choice variant presence index.
+ * Returns 0 in case of error.
+ */
+unsigned
+CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size);
+}
+
+/*
+ * Sets or resets the 1-based choice variant presence index.
+ * In case a previous index is not zero, the currently selected structure
+ * member is freed and zeroed-out first.
+ * Returns 0 on success and -1 on error.
+ */
+int
+CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr,
+ unsigned present) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ unsigned old_present;
+
+ if(!sptr) {
+ return -1;
+ }
+
+ if(present > td->elements_count)
+ return -1;
+
+ old_present =
+ _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size);
+ if(present == old_present)
+ return 0;
+
+ if(old_present != 0) {
+ assert(old_present <= td->elements_count);
+ ASN_STRUCT_RESET(*td, sptr);
+ }
+
+ _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present);
+
+ return 0;
+}
+
+
+asn_random_fill_result_t
+CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+ const asn_encoding_constraints_t *constr,
+ size_t max_length) {
+ const asn_CHOICE_specifics_t *specs =
+ (const asn_CHOICE_specifics_t *)td->specifics;
+ asn_random_fill_result_t res;
+ asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+ asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+ const asn_TYPE_member_t *elm;
+ unsigned present;
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+ void *st = *sptr;
+
+ if(max_length == 0) return result_skipped;
+
+ (void)constr;
+
+ if(st == NULL) {
+ st = CALLOC(1, specs->struct_size);
+ if(st == NULL) {
+ return result_failed;
+ }
+ }
+
+ present = asn_random_between(1, td->elements_count);
+ elm = &td->elements[present - 1];
+
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+
+ res = elm->type->op->random_fill(elm->type, memb_ptr2,
+ &elm->encoding_constraints, max_length);
+ _set_present_idx(st, specs->pres_offset, specs->pres_size, present);
+ if(res.code == ARFILL_OK) {
+ *sptr = st;
+ } else {
+ if(st == *sptr) {
+ ASN_STRUCT_RESET(*td, st);
+ } else {
+ ASN_STRUCT_FREE(*td, st);
+ }
+ }
+
+ return res;
+}
+
+
+asn_TYPE_operation_t asn_OP_CHOICE = {
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_compare,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ CHOICE_decode_oer,
+ CHOICE_encode_oer,
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ CHOICE_random_fill,
+ CHOICE_outmost_tag
+};
diff --git a/src/asn/asn1c/constr_CHOICE.h b/src/asn/asn1c/constr_CHOICE.h
new file mode 100644
index 0000000..a1999ed
--- /dev/null
+++ b/src/asn/asn1c/constr_CHOICE.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _CONSTR_CHOICE_H_
+#define _CONSTR_CHOICE_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_CHOICE_specifics_s {
+ /*
+ * Target structure description.
+ */
+ unsigned struct_size; /* Size of the target structure. */
+ unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */
+ unsigned pres_offset; /* Identifier of the present member */
+ unsigned pres_size; /* Size of the identifier (enum) */
+
+ /*
+ * Tags to members mapping table.
+ */
+ const asn_TYPE_tag2member_t *tag2el;
+ unsigned tag2el_count;
+
+ /* Canonical ordering of CHOICE elements, for PER */
+ const unsigned *to_canonical_order;
+ const unsigned *from_canonical_order;
+
+ /*
+ * Extensions-related stuff.
+ */
+ signed ext_start; /* First member of extensions, or -1 */
+} asn_CHOICE_specifics_t;
+
+/*
+ * A set specialized functions dealing with the CHOICE type.
+ */
+asn_struct_free_f CHOICE_free;
+asn_struct_print_f CHOICE_print;
+asn_struct_compare_f CHOICE_compare;
+asn_constr_check_f CHOICE_constraint;
+ber_type_decoder_f CHOICE_decode_ber;
+der_type_encoder_f CHOICE_encode_der;
+xer_type_decoder_f CHOICE_decode_xer;
+xer_type_encoder_f CHOICE_encode_xer;
+oer_type_decoder_f CHOICE_decode_oer;
+oer_type_encoder_f CHOICE_encode_oer;
+per_type_decoder_f CHOICE_decode_uper;
+per_type_encoder_f CHOICE_encode_uper;
+per_type_decoder_f CHOICE_decode_aper;
+per_type_encoder_f CHOICE_encode_aper;
+asn_outmost_tag_f CHOICE_outmost_tag;
+asn_random_fill_f CHOICE_random_fill;
+extern asn_TYPE_operation_t asn_OP_CHOICE;
+
+/*
+ * Return the 1-based choice variant presence index.
+ * Returns 0 in case of error.
+ */
+unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td,
+ const void *structure_ptr);
+
+/*
+ * Sets or resets the 1-based choice variant presence index.
+ * In case a previous index is not zero, the currently selected structure
+ * member is freed and zeroed-out first.
+ * Returns 0 on success and -1 on error.
+ */
+int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td,
+ void *structure_ptr, unsigned present);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CONSTR_CHOICE_H_ */
diff --git a/src/asn/asn1c/constr_SEQUENCE.c b/src/asn/asn1c/constr_SEQUENCE.c
new file mode 100644
index 0000000..f12275c
--- /dev/null
+++ b/src/asn/asn1c/constr_SEQUENCE.c
@@ -0,0 +1,2059 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+#include
+
+/*
+ * Number of bytes left for this structure.
+ * (ctx->left) indicates the number of bytes _transferred_ for the structure.
+ * (size) contains the number of bytes in the buffer passed.
+ */
+#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left)
+
+/*
+ * If the subprocessor function returns with an indication that it wants
+ * more data, it may well be a fatal decoding problem, because the
+ * size is constrained by the 's L, even if the buffer size allows
+ * reading more data.
+ * For example, consider the buffer containing the following TLVs:
+ * ...
+ * The TLV length clearly indicates that one byte is expected in V, but
+ * if the V processor returns with "want more data" even if the buffer
+ * contains way more data than the V processor have seen.
+ */
+#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size)
+
+/*
+ * This macro "eats" the part of the buffer which is definitely "consumed",
+ * i.e. was correctly converted into local representation or rightfully skipped.
+ */
+#undef ADVANCE
+#define ADVANCE(num_bytes) do { \
+ size_t num = num_bytes; \
+ ptr = ((const char *)ptr) + num; \
+ size -= num; \
+ if(ctx->left >= 0) \
+ ctx->left -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+/*
+ * Switch to the next phase of parsing.
+ */
+#undef NEXT_PHASE
+#undef PHASE_OUT
+#define NEXT_PHASE(ctx) do { \
+ ctx->phase++; \
+ ctx->step = 0; \
+ } while(0)
+#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0)
+
+/*
+ * Return a standardized complex structure.
+ */
+#undef RETURN
+#define RETURN(_code) do { \
+ rval.code = _code; \
+ rval.consumed = consumed_myself;\
+ return rval; \
+ } while(0)
+
+/*
+ * Check whether we are inside the extensions group.
+ */
+#define IN_EXTENSION_GROUP(specs, memb_idx) \
+ ((specs)->first_extension >= 0 \
+ && (unsigned)(specs)->first_extension <= (memb_idx))
+
+/*
+ * Tags are canonically sorted in the tag2element map.
+ */
+static int
+_t2e_cmp(const void *ap, const void *bp) {
+ const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap;
+ const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp;
+
+ int a_class = BER_TAG_CLASS(a->el_tag);
+ int b_class = BER_TAG_CLASS(b->el_tag);
+
+ if(a_class == b_class) {
+ ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag);
+ ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag);
+
+ if(a_value == b_value) {
+ if(a->el_no > b->el_no)
+ return 1;
+ /*
+ * Important: we do not check
+ * for a->el_no <= b->el_no!
+ */
+ return 0;
+ } else if(a_value < b_value)
+ return -1;
+ else
+ return 1;
+ } else if(a_class < b_class) {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+
+/*
+ * The decoder of the SEQUENCE type.
+ */
+asn_dec_rval_t
+SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **struct_ptr,
+ const void *ptr, size_t size, int tag_mode) {
+ /*
+ * Bring closer parts of structure description.
+ */
+ const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elements = td->elements;
+
+ /*
+ * Parts of the structure being constructed.
+ */
+ void *st = *struct_ptr; /* Target structure. */
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ ber_tlv_tag_t tlv_tag; /* T from TLV */
+ asn_dec_rval_t rval; /* Return code from subparsers */
+
+ ssize_t consumed_myself = 0; /* Consumed bytes from ptr */
+ size_t edx; /* SEQUENCE element's index */
+
+ ASN_DEBUG("Decoding %s as SEQUENCE", td->name);
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(st == 0) {
+ st = *struct_ptr = CALLOC(1, specs->struct_size);
+ if(st == 0) {
+ RETURN(RC_FAIL);
+ }
+ }
+
+ /*
+ * Restore parsing context.
+ */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+ /*
+ * Start to parse where left previously
+ */
+ switch(ctx->phase) {
+ case 0:
+ /*
+ * PHASE 0.
+ * Check that the set of tags associated with given structure
+ * perfectly fits our expectations.
+ */
+
+ rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size,
+ tag_mode, 1, &ctx->left, 0);
+ if(rval.code != RC_OK) {
+ ASN_DEBUG("%s tagging check failed: %d",
+ td->name, rval.code);
+ return rval;
+ }
+
+ if(ctx->left >= 0)
+ ctx->left += rval.consumed; /* ?Substracted below! */
+ ADVANCE(rval.consumed);
+
+ NEXT_PHASE(ctx);
+
+ ASN_DEBUG("Structure consumes %ld bytes, buffer %ld",
+ (long)ctx->left, (long)size);
+
+ /* Fall through */
+ case 1:
+ /*
+ * PHASE 1.
+ * From the place where we've left it previously,
+ * try to decode the next member from the list of
+ * this structure's elements.
+ * (ctx->step) stores the member being processed
+ * between invocations and the microphase {0,1} of parsing
+ * that member:
+ * step = ( * 2 + ).
+ */
+ for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count;
+ edx++, ctx->step = (ctx->step & ~1) + 2) {
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+ ssize_t tag_len; /* Length of TLV's T */
+ size_t opt_edx_end; /* Next non-optional element */
+ size_t n;
+ int use_bsearch;
+
+ if(ctx->step & 1)
+ goto microphase2;
+
+ /*
+ * MICROPHASE 1: Synchronize decoding.
+ */
+ ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d"
+ " opt=%d ec=%d",
+ td->name, (int)ctx->left, edx,
+ elements[edx].flags, elements[edx].optional,
+ td->elements_count);
+
+ if(ctx->left == 0 /* No more stuff is expected */
+ && (
+ /* Explicit OPTIONAL specification reaches the end */
+ (edx + elements[edx].optional == td->elements_count) ||
+ /* All extensions are optional */
+ IN_EXTENSION_GROUP(specs, edx))) {
+ ASN_DEBUG("End of SEQUENCE %s", td->name);
+ /*
+ * Found the legitimate end of the structure.
+ */
+ PHASE_OUT(ctx);
+ RETURN(RC_OK);
+ }
+
+ /*
+ * Fetch the T from TLV.
+ */
+ tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag);
+ ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " "
+ "(%s) is %s encoded in %d bytes, of frame %ld",
+ td->name, edx, elements[edx].name,
+ ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT);
+ switch(tag_len) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
+ if(LEFT < 2) {
+ if(SIZE_VIOLATION) {
+ RETURN(RC_FAIL);
+ } else {
+ RETURN(RC_WMORE);
+ }
+ } else if(((const uint8_t *)ptr)[1] == 0) {
+ ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx,
+ elements[edx].optional, td->elements_count);
+ if((edx + elements[edx].optional == td->elements_count)
+ || IN_EXTENSION_GROUP(specs, edx)) {
+ /*
+ * Yeah, baby! Found the terminator
+ * of the indefinite length structure.
+ */
+ /*
+ * Proceed to the canonical
+ * finalization function.
+ * No advancing is necessary.
+ */
+ goto phase3;
+ }
+ }
+ }
+
+ /*
+ * Find the next available type with this tag.
+ */
+ use_bsearch = 0;
+ opt_edx_end = edx + elements[edx].optional + 1;
+ if(opt_edx_end > td->elements_count)
+ opt_edx_end = td->elements_count; /* Cap */
+ else if(opt_edx_end - edx > 8) {
+ /* Limit the scope of linear search... */
+ opt_edx_end = edx + 8;
+ use_bsearch = 1;
+ /* ... and resort to bsearch() */
+ }
+ for(n = edx; n < opt_edx_end; n++) {
+ if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) {
+ /*
+ * Found element corresponding to the tag
+ * being looked at.
+ * Reposition over the right element.
+ */
+ edx = n;
+ ctx->step = 1 + 2 * edx; /* Remember! */
+ goto microphase2;
+ } else if(elements[n].flags & ATF_ANY_TYPE) {
+ /*
+ * This is the ANY type, which may bear
+ * any flag whatsoever.
+ */
+ edx = n;
+ ctx->step = 1 + 2 * edx; /* Remember! */
+ goto microphase2;
+ } else if(elements[n].tag == (ber_tlv_tag_t)-1) {
+ use_bsearch = 1;
+ break;
+ }
+ }
+ if(use_bsearch) {
+ /*
+ * Resort to a binary search over
+ * sorted array of tags.
+ */
+ const asn_TYPE_tag2member_t *t2m;
+ asn_TYPE_tag2member_t key = {0, 0, 0, 0};
+ key.el_tag = tlv_tag;
+ key.el_no = edx;
+ t2m = (const asn_TYPE_tag2member_t *)bsearch(&key,
+ specs->tag2el, specs->tag2el_count,
+ sizeof(specs->tag2el[0]), _t2e_cmp);
+ if(t2m) {
+ const asn_TYPE_tag2member_t *best = 0;
+ const asn_TYPE_tag2member_t *t2m_f, *t2m_l;
+ size_t edx_max = edx + elements[edx].optional;
+ /*
+ * Rewind to the first element with that tag,
+ * `cause bsearch() does not guarantee order.
+ */
+ t2m_f = t2m + t2m->toff_first;
+ t2m_l = t2m + t2m->toff_last;
+ for(t2m = t2m_f; t2m <= t2m_l; t2m++) {
+ if(t2m->el_no > edx_max) break;
+ if(t2m->el_no < edx) continue;
+ best = t2m;
+ }
+ if(best) {
+ edx = best->el_no;
+ ctx->step = 1 + 2 * edx;
+ goto microphase2;
+ }
+ }
+ n = opt_edx_end;
+ }
+ if(n == opt_edx_end) {
+ /*
+ * If tag is unknown, it may be either
+ * an unknown (thus, incorrect) tag,
+ * or an extension (...),
+ * or an end of the indefinite-length structure.
+ */
+ if(!IN_EXTENSION_GROUP(specs,
+ edx + elements[edx].optional)) {
+ ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")",
+ ber_tlv_tag_string(tlv_tag), edx);
+ ASN_DEBUG("Expected tag %s (%s)%s",
+ ber_tlv_tag_string(elements[edx].tag),
+ elements[edx].name,
+ elements[edx].optional
+ ?" or alternatives":"");
+ RETURN(RC_FAIL);
+ } else {
+ /* Skip this tag */
+ ssize_t skip;
+ edx += elements[edx].optional;
+
+ ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")",
+ ber_tlv_tag_string(tlv_tag), edx);
+ skip = ber_skip_length(opt_codec_ctx,
+ BER_TLV_CONSTRUCTED(ptr),
+ (const char *)ptr + tag_len,
+ LEFT - tag_len);
+ ASN_DEBUG("Skip length %d in %s",
+ (int)skip, td->name);
+ switch(skip) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ ADVANCE(skip + tag_len);
+ ctx->step -= 2;
+ edx--;
+ continue; /* Try again with the next tag */
+ }
+ }
+
+ /*
+ * MICROPHASE 2: Invoke the member-specific decoder.
+ */
+ ctx->step |= 1; /* Confirm entering next microphase */
+ microphase2:
+ ASN_DEBUG("Inside SEQUENCE %s MF2", td->name);
+
+ /*
+ * Compute the position of the member inside a structure,
+ * and also a type of containment (it may be contained
+ * as pointer or using inline inclusion).
+ */
+ if(elements[edx].flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset);
+ } else {
+ /*
+ * A pointer to a pointer
+ * holding the start of the structure
+ */
+ memb_ptr = (char *)st + elements[edx].memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+ /*
+ * Invoke the member fetch routine according to member's type
+ */
+ if(elements[edx].flags & ATF_OPEN_TYPE) {
+ rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT);
+ } else {
+ rval = elements[edx].type->op->ber_decoder(opt_codec_ctx,
+ elements[edx].type,
+ memb_ptr2, ptr, LEFT,
+ elements[edx].tag_mode);
+ }
+ ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d "
+ "in %d bytes rval.code %d, size=%d",
+ td->name, edx, elements[edx].type->name,
+ (int)LEFT, (int)rval.consumed, rval.code, (int)size);
+ switch(rval.code) {
+ case RC_OK:
+ break;
+ case RC_WMORE: /* More data expected */
+ if(!SIZE_VIOLATION) {
+ ADVANCE(rval.consumed);
+ RETURN(RC_WMORE);
+ }
+ ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)",
+ (long)ctx->left, (long)size);
+ /* Fall through */
+ case RC_FAIL: /* Fatal error */
+ RETURN(RC_FAIL);
+ } /* switch(rval) */
+
+ ADVANCE(rval.consumed);
+ } /* for(all structure members) */
+
+ phase3:
+ ctx->phase = 3;
+ /* Fall through */
+ case 3: /* 00 and other tags expected */
+ case 4: /* only 00's expected */
+
+ ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld",
+ td->name, (long)ctx->left, (long)size);
+
+ /*
+ * Skip everything until the end of the SEQUENCE.
+ */
+ while(ctx->left) {
+ ssize_t tl, ll;
+
+ tl = ber_fetch_tag(ptr, LEFT, &tlv_tag);
+ switch(tl) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ /*
+ * If expected <0><0>...
+ */
+ if(ctx->left < 0
+ && ((const uint8_t *)ptr)[0] == 0) {
+ if(LEFT < 2) {
+ if(SIZE_VIOLATION)
+ RETURN(RC_FAIL);
+ else
+ RETURN(RC_WMORE);
+ } else if(((const uint8_t *)ptr)[1] == 0) {
+ /*
+ * Correctly finished with <0><0>.
+ */
+ ADVANCE(2);
+ ctx->left++;
+ ctx->phase = 4;
+ continue;
+ }
+ }
+
+ if(!IN_EXTENSION_GROUP(specs, td->elements_count)
+ || ctx->phase == 4) {
+ ASN_DEBUG("Unexpected continuation "
+ "of a non-extensible type "
+ "%s (SEQUENCE): %s",
+ td->name,
+ ber_tlv_tag_string(tlv_tag));
+ RETURN(RC_FAIL);
+ }
+
+ ll = ber_skip_length(opt_codec_ctx,
+ BER_TLV_CONSTRUCTED(ptr),
+ (const char *)ptr + tl, LEFT - tl);
+ switch(ll) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ ADVANCE(tl + ll);
+ }
+
+ PHASE_OUT(ctx);
+ }
+
+ RETURN(RC_OK);
+}
+
+
+/*
+ * The DER encoder of the SEQUENCE type.
+ */
+asn_enc_rval_t
+SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ size_t computed_size = 0;
+ asn_enc_rval_t erval;
+ ssize_t ret;
+ size_t edx;
+
+ ASN_DEBUG("%s %s as SEQUENCE",
+ cb?"Encoding":"Estimating", td->name);
+
+ /*
+ * Gather the length of the underlying members sequence.
+ */
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+
+ const void *memb_ptr; /* Pointer to the member */
+ const void *const *memb_ptr2; /* Pointer to that pointer */
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 =
+ (const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!*memb_ptr2) {
+ ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present",
+ elm->name, edx);
+ if(elm->optional)
+ continue;
+ /* Mandatory element is missing */
+ ASN__ENCODE_FAILED;
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ memb_ptr2 = &memb_ptr;
+ }
+
+ /* Eliminate default values */
+ if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0)
+ continue;
+
+ erval = elm->type->op->der_encoder(elm->type, *memb_ptr2,
+ elm->tag_mode, elm->tag,
+ 0, 0);
+ if(erval.encoded == -1)
+ return erval;
+ computed_size += erval.encoded;
+ ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes",
+ edx, elm->name, (long)erval.encoded);
+ }
+
+ /*
+ * Encode the TLV for the sequence itself.
+ */
+ ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key);
+ ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size);
+ if(ret == -1)
+ ASN__ENCODE_FAILED;
+ erval.encoded = computed_size + ret;
+
+ if(!cb) ASN__ENCODED_OK(erval);
+
+ /*
+ * Encode all members.
+ */
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ asn_enc_rval_t tmperval;
+ const void *memb_ptr; /* Pointer to the member */
+ const void *const *memb_ptr2; /* Pointer to that pointer */
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 =
+ (const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!*memb_ptr2) continue;
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ memb_ptr2 = &memb_ptr;
+ }
+
+ /* Eliminate default values */
+ if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0)
+ continue;
+
+ tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2,
+ elm->tag_mode, elm->tag, cb, app_key);
+ if(tmperval.encoded == -1)
+ return tmperval;
+ computed_size -= tmperval.encoded;
+ ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes",
+ edx, elm->name, td->name, (long)tmperval.encoded);
+ }
+
+ if(computed_size != 0)
+ /*
+ * Encoded size is not equal to the computed size.
+ */
+ ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(erval);
+}
+
+
+#undef XER_ADVANCE
+#define XER_ADVANCE(num_bytes) \
+ do { \
+ size_t num = (num_bytes); \
+ ptr = ((const char *)ptr) + num; \
+ size -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+/*
+ * Decode the XER (XML) data.
+ */
+asn_dec_rval_t
+SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **struct_ptr,
+ const char *opt_mname, const void *ptr, size_t size) {
+ /*
+ * Bring closer parts of structure description.
+ */
+ const asn_SEQUENCE_specifics_t *specs
+ = (const asn_SEQUENCE_specifics_t *)td->specifics;
+ asn_TYPE_member_t *elements = td->elements;
+ const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
+
+ /*
+ * ... and parts of the structure being constructed.
+ */
+ void *st = *struct_ptr; /* Target structure. */
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ asn_dec_rval_t rval; /* Return value from a decoder */
+ ssize_t consumed_myself = 0; /* Consumed bytes from ptr */
+ size_t edx; /* Element index */
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(st == 0) {
+ st = *struct_ptr = CALLOC(1, specs->struct_size);
+ if(st == 0) RETURN(RC_FAIL);
+ }
+
+ /*
+ * Restore parsing context.
+ */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+
+ /*
+ * Phases of XER/XML processing:
+ * Phase 0: Check that the opening tag matches our expectations.
+ * Phase 1: Processing body and reacting on closing tag.
+ * Phase 2: Processing inner type.
+ * Phase 3: Skipping unknown extensions.
+ * Phase 4: PHASED OUT
+ */
+ for(edx = ctx->step; ctx->phase <= 3;) {
+ pxer_chunk_type_e ch_type; /* XER chunk type */
+ ssize_t ch_size; /* Chunk size */
+ xer_check_tag_e tcv; /* Tag check value */
+ asn_TYPE_member_t *elm;
+
+ /*
+ * Go inside the inner member of a sequence.
+ */
+ if(ctx->phase == 2) {
+ asn_dec_rval_t tmprval;
+ void *memb_ptr_dontuse; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+
+ elm = &td->elements[edx];
+
+ if(elm->flags & ATF_POINTER) {
+ /* Member is a pointer to another structure */
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr_dontuse = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */
+ }
+
+ if(elm->flags & ATF_OPEN_TYPE) {
+ tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size);
+ } else {
+ /* Invoke the inner type decoder, m.b. multiple times */
+ tmprval = elm->type->op->xer_decoder(opt_codec_ctx,
+ elm->type, memb_ptr2, elm->name,
+ ptr, size);
+ }
+ XER_ADVANCE(tmprval.consumed);
+ if(tmprval.code != RC_OK)
+ RETURN(tmprval.code);
+ ctx->phase = 1; /* Back to body processing */
+ ctx->step = ++edx;
+ ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d",
+ ctx->phase, ctx->step);
+ /* Fall through */
+ }
+
+ /*
+ * Get the next part of the XML stream.
+ */
+ ch_size = xer_next_token(&ctx->context, ptr, size,
+ &ch_type);
+ if(ch_size == -1) {
+ RETURN(RC_FAIL);
+ } else {
+ switch(ch_type) {
+ case PXER_WMORE:
+ RETURN(RC_WMORE);
+ case PXER_COMMENT: /* Got XML comment */
+ case PXER_TEXT: /* Ignore free-standing text */
+ XER_ADVANCE(ch_size); /* Skip silently */
+ continue;
+ case PXER_TAG:
+ break; /* Check the rest down there */
+ }
+ }
+
+ tcv = xer_check_tag(ptr, ch_size, xml_tag);
+ ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]",
+ tcv, ctx->phase, xml_tag);
+
+ /* Skip the extensions section */
+ if(ctx->phase == 3) {
+ switch(xer_skip_unknown(tcv, &ctx->left)) {
+ case -1:
+ ctx->phase = 4;
+ RETURN(RC_FAIL);
+ case 0:
+ XER_ADVANCE(ch_size);
+ continue;
+ case 1:
+ XER_ADVANCE(ch_size);
+ ctx->phase = 1;
+ continue;
+ case 2:
+ ctx->phase = 1;
+ break;
+ }
+ }
+
+ switch(tcv) {
+ case XCT_CLOSING:
+ if(ctx->phase == 0) break;
+ ctx->phase = 0;
+ /* Fall through */
+ case XCT_BOTH:
+ if(ctx->phase == 0) {
+ if(edx >= td->elements_count ||
+ /* Explicit OPTIONAL specs reaches the end */
+ (edx + elements[edx].optional == td->elements_count) ||
+ /* All extensions are optional */
+ IN_EXTENSION_GROUP(specs, edx)) {
+ XER_ADVANCE(ch_size);
+ ctx->phase = 4; /* Phase out */
+ RETURN(RC_OK);
+ } else {
+ ASN_DEBUG("Premature end of XER SEQUENCE");
+ RETURN(RC_FAIL);
+ }
+ }
+ /* Fall through */
+ case XCT_OPENING:
+ if(ctx->phase == 0) {
+ XER_ADVANCE(ch_size);
+ ctx->phase = 1; /* Processing body phase */
+ continue;
+ }
+ /* Fall through */
+ case XCT_UNKNOWN_OP:
+ case XCT_UNKNOWN_BO:
+
+ ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "",
+ tcv, ctx->phase, edx);
+ if(ctx->phase != 1) {
+ break; /* Really unexpected */
+ }
+
+ if(edx < td->elements_count) {
+ /*
+ * Search which member corresponds to this tag.
+ */
+ size_t n;
+ size_t edx_end = edx + elements[edx].optional + 1;
+ if(edx_end > td->elements_count)
+ edx_end = td->elements_count;
+ for(n = edx; n < edx_end; n++) {
+ elm = &td->elements[n];
+ tcv = xer_check_tag(ptr, ch_size, elm->name);
+ switch(tcv) {
+ case XCT_BOTH:
+ case XCT_OPENING:
+ /*
+ * Process this member.
+ */
+ ctx->step = edx = n;
+ ctx->phase = 2;
+ break;
+ case XCT_UNKNOWN_OP:
+ case XCT_UNKNOWN_BO:
+ continue;
+ default:
+ n = edx_end;
+ break; /* Phase out */
+ }
+ break;
+ }
+ if(n != edx_end)
+ continue;
+ } else {
+ ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u",
+ edx, td->elements_count);
+ }
+
+ /* It is expected extension */
+ if(IN_EXTENSION_GROUP(specs,
+ edx + (edx < td->elements_count
+ ? elements[edx].optional : 0))) {
+ ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "",
+ edx);
+ /*
+ * Check for (XCT_BOTH or XCT_UNKNOWN_BO)
+ * By using a mask. Only record a pure
+ * tags.
+ */
+ if(tcv & XCT_CLOSING) {
+ /* Found without body */
+ } else {
+ ctx->left = 1;
+ ctx->phase = 3; /* Skip ...'s */
+ }
+ XER_ADVANCE(ch_size);
+ continue;
+ }
+
+ /* Fall through */
+ default:
+ break;
+ }
+
+ ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]",
+ size>0?((const char *)ptr)[0]:'.',
+ size>1?((const char *)ptr)[1]:'.',
+ size>2?((const char *)ptr)[2]:'.',
+ size>3?((const char *)ptr)[3]:'.',
+ size>4?((const char *)ptr)[4]:'.',
+ size>5?((const char *)ptr)[5]:'.');
+ break;
+ }
+
+ ctx->phase = 4; /* "Phase out" on hard failure */
+ RETURN(RC_FAIL);
+}
+
+asn_enc_rval_t
+SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t er;
+ int xcan = (flags & XER_F_CANONICAL);
+ asn_TYPE_descriptor_t *tmp_def_val_td = 0;
+ void *tmp_def_val = 0;
+ size_t edx;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ er.encoded = 0;
+
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_enc_rval_t tmper;
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ const void *memb_ptr;
+ const char *mname = elm->name;
+ unsigned int mlen = strlen(mname);
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr =
+ *(const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) {
+ assert(tmp_def_val == 0);
+ if(elm->default_value_set) {
+ if(elm->default_value_set(&tmp_def_val)) {
+ ASN__ENCODE_FAILED;
+ } else {
+ memb_ptr = tmp_def_val;
+ tmp_def_val_td = elm->type;
+ }
+ } else if(elm->optional) {
+ continue;
+ } else {
+ /* Mandatory element is missing */
+ ASN__ENCODE_FAILED;
+ }
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel);
+ ASN__CALLBACK3("<", 1, mname, mlen, ">", 1);
+
+ /* Print the member itself */
+ tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1,
+ flags, cb, app_key);
+ if(tmp_def_val) {
+ ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val);
+ tmp_def_val = 0;
+ }
+ if(tmper.encoded == -1) return tmper;
+ er.encoded += tmper.encoded;
+
+ ASN__CALLBACK3("", 2, mname, mlen, ">", 1);
+ }
+
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val);
+ ASN__ENCODE_FAILED;
+}
+
+int
+SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ size_t edx;
+ int ret;
+
+ if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0;
+
+ /* Dump preamble */
+ if(cb(td->name, strlen(td->name), app_key) < 0
+ || cb(" ::= {", 6, app_key) < 0)
+ return -1;
+
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ const void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) {
+ if(elm->optional) continue;
+ /* Print line */
+ /* Fall through */
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ /* Indentation */
+ _i_INDENT(1);
+
+ /* Print the member's name and stuff */
+ if(cb(elm->name, strlen(elm->name), app_key) < 0
+ || cb(": ", 2, app_key) < 0)
+ return -1;
+
+ /* Print the member itself */
+ ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1,
+ cb, app_key);
+ if(ret) return ret;
+ }
+
+ ilevel--;
+ _i_INDENT(1);
+
+ return (cb("}", 1, app_key) < 0) ? -1 : 0;
+}
+
+void
+SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr,
+ enum asn_struct_free_method method) {
+ size_t edx;
+ const asn_SEQUENCE_specifics_t *specs =
+ (const asn_SEQUENCE_specifics_t *)td->specifics;
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ if(!td || !sptr)
+ return;
+
+ ASN_DEBUG("Freeing %s as SEQUENCE", td->name);
+
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ void *memb_ptr;
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(void **)((char *)sptr + elm->memb_offset);
+ if(memb_ptr)
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
+ } else {
+ memb_ptr = (void *)((char *)sptr + elm->memb_offset);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
+ }
+ }
+
+ /* Clean parsing context */
+ ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset);
+ FREEMEM(ctx->ptr);
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(sptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(
+ sptr, 0,
+ ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size);
+ break;
+ }
+}
+
+int
+SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t edx;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /*
+ * Iterate over structure members and check their validity.
+ */
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ const void *memb_ptr;
+
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset);
+ if(!memb_ptr) {
+ if(elm->optional)
+ continue;
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: mandatory element %s absent (%s:%d)",
+ td->name, elm->name, __FILE__, __LINE__);
+ return -1;
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ }
+
+ if(elm->encoding_constraints.general_constraints) {
+ int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr,
+ ctfailcb, app_key);
+ if(ret) return ret;
+ } else {
+ return elm->type->encoding_constraints.general_constraints(elm->type,
+ memb_ptr, ctfailcb, app_key);
+ }
+ }
+
+ return 0;
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics;
+ void *st = *sptr; /* Target structure. */
+ int extpresent; /* Extension additions are present */
+ uint8_t *opres; /* Presence of optional root members */
+ asn_per_data_t opmd;
+ asn_dec_rval_t rv;
+ size_t edx;
+
+ (void)constraints;
+
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ ASN__DECODE_FAILED;
+
+ if(!st) {
+ st = *sptr = CALLOC(1, specs->struct_size);
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name);
+
+ /* Handle extensions */
+ if(specs->first_extension < 0) {
+ extpresent = 0;
+ } else {
+ extpresent = per_get_few_bits(pd, 1);
+ if(extpresent < 0) ASN__DECODE_STARVED;
+ }
+
+ /* Prepare a place and read-in the presence bitmap */
+ memset(&opmd, 0, sizeof(opmd));
+ if(specs->roms_count) {
+ opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1);
+ if(!opres) ASN__DECODE_FAILED;
+ /* Get the presence map */
+ if(per_get_many_bits(pd, opres, 0, specs->roms_count)) {
+ FREEMEM(opres);
+ ASN__DECODE_STARVED;
+ }
+ opmd.buffer = opres;
+ opmd.nbits = specs->roms_count;
+ ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)",
+ td->name, specs->roms_count, *opres);
+ } else {
+ opres = 0;
+ }
+
+ /*
+ * Get the sequence ROOT elements.
+ */
+ for(edx = 0;
+ edx < (specs->first_extension < 0 ? td->elements_count
+ : (size_t)specs->first_extension);
+ edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+
+ assert(!IN_EXTENSION_GROUP(specs, edx));
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+
+ /* Deal with optionality */
+ if(elm->optional) {
+ int present = per_get_few_bits(&opmd, 1);
+ ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)",
+ td->name, elm->name, present,
+ (int)opmd.nboff, (int)opmd.nbits);
+ if(present == 0) {
+ /* This element is not present */
+ if(elm->default_value_set) {
+ /* Fill-in DEFAULT */
+ if(elm->default_value_set(memb_ptr2)) {
+ FREEMEM(opres);
+ ASN__DECODE_FAILED;
+ }
+ ASN_DEBUG("Filled-in default");
+ }
+ /* The member is just not present */
+ continue;
+ }
+ /* Fall through */
+ }
+
+ /* Fetch the member from the stream */
+ ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name);
+
+ if(elm->flags & ATF_OPEN_TYPE) {
+ rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd);
+ } else {
+ rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr2, pd);
+ }
+ if(rv.code != RC_OK) {
+ ASN_DEBUG("Failed decode %s in %s",
+ elm->name, td->name);
+ FREEMEM(opres);
+ return rv;
+ }
+ }
+
+ /* Optionality map is not needed anymore */
+ FREEMEM(opres);
+
+ /*
+ * Deal with extensions.
+ */
+ if(extpresent) {
+ ssize_t bmlength;
+ uint8_t *epres; /* Presence of extension members */
+ asn_per_data_t epmd;
+
+ bmlength = uper_get_nslength(pd);
+ if(bmlength < 0) ASN__DECODE_STARVED;
+
+ ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name);
+
+ epres = (uint8_t *)MALLOC((bmlength + 15) >> 3);
+ if(!epres) ASN__DECODE_STARVED;
+
+ /* Get the extensions map */
+ if(per_get_many_bits(pd, epres, 0, bmlength)) {
+ FREEMEM(epres);
+ ASN__DECODE_STARVED;
+ }
+
+ memset(&epmd, 0, sizeof(epmd));
+ epmd.buffer = epres;
+ epmd.nbits = bmlength;
+ ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)",
+ td->name, (long)bmlength, *epres);
+
+ /* Go over extensions and read them in */
+ for(edx = specs->first_extension; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+ int present;
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr = (void *)((char *)st + elm->memb_offset);
+ memb_ptr2 = &memb_ptr;
+ }
+
+ present = per_get_few_bits(&epmd, 1);
+ if(present <= 0) {
+ if(present < 0) break; /* No more extensions */
+ continue;
+ }
+
+ ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name,
+ *memb_ptr2);
+ rv = uper_open_type_get(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints,
+ memb_ptr2, pd);
+ if(rv.code != RC_OK) {
+ FREEMEM(epres);
+ return rv;
+ }
+ }
+
+ /* Skip over overflow extensions which aren't present
+ * in this system's version of the protocol */
+ for(;;) {
+ ASN_DEBUG("Getting overflow extensions");
+ switch(per_get_few_bits(&epmd, 1)) {
+ case -1: break;
+ case 0: continue;
+ default:
+ if(uper_open_type_skip(opt_codec_ctx, pd)) {
+ FREEMEM(epres);
+ ASN__DECODE_STARVED;
+ }
+ ASN_DEBUG("Skipped overflow extension");
+ continue;
+ }
+ break;
+ }
+
+ FREEMEM(epres);
+ }
+
+ if(specs->first_extension >= 0) {
+ unsigned i;
+ /* Fill DEFAULT members in extensions */
+ for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count;
+ i++) {
+ asn_TYPE_member_t *elm;
+ void **memb_ptr2; /* Pointer to member pointer */
+
+ edx = specs->oms[i];
+ elm = &td->elements[edx];
+
+ if(!elm->default_value_set) continue;
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ if(*memb_ptr2) continue;
+ } else {
+ continue; /* Extensions are all optionals */
+ }
+
+ /* Set default value */
+ if(elm->default_value_set(memb_ptr2)) {
+ ASN__DECODE_FAILED;
+ }
+ }
+ }
+
+ rv.consumed = 0;
+ rv.code = RC_OK;
+ return rv;
+}
+
+static int
+SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_per_outp_t *po1, asn_per_outp_t *po2) {
+ const asn_SEQUENCE_specifics_t *specs =
+ (const asn_SEQUENCE_specifics_t *)td->specifics;
+ int exts_present = 0;
+ int exts_count = 0;
+ size_t edx;
+
+ if(specs->first_extension < 0) {
+ return 0;
+ }
+
+ /* Find out which extensions are present */
+ for(edx = specs->first_extension; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ const void *memb_ptr; /* Pointer to the member */
+ const void *const *memb_ptr2; /* Pointer to that pointer */
+ int present;
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 =
+ (const void *const *)((const char *)sptr + elm->memb_offset);
+ present = (*memb_ptr2 != 0);
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ memb_ptr2 = &memb_ptr;
+ present = 1;
+ }
+
+ ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name,
+ elm->type->name, edx, present);
+ exts_count++;
+ exts_present += present;
+
+ /* Encode as presence marker */
+ if(po1 && per_put_few_bits(po1, present, 1)) {
+ return -1;
+ }
+ /* Encode as open type field */
+ if(po2 && present
+ && uper_open_type_put(elm->type,
+ elm->encoding_constraints.per_constraints,
+ *memb_ptr2, po2))
+ return -1;
+ }
+
+ return exts_present ? exts_count : 0;
+}
+
+asn_enc_rval_t
+SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const asn_SEQUENCE_specifics_t *specs
+ = (const asn_SEQUENCE_specifics_t *)td->specifics;
+ asn_enc_rval_t er;
+ int n_extensions;
+ size_t edx;
+ size_t i;
+
+ (void)constraints;
+
+ if(!sptr)
+ ASN__ENCODE_FAILED;
+
+ er.encoded = 0;
+
+ ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name);
+
+ /*
+ * X.691#18.1 Whether structure is extensible
+ * and whether to encode extensions
+ */
+ if(specs->first_extension < 0) {
+ n_extensions = 0; /* There are no extensions to encode */
+ } else {
+ n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0);
+ if(n_extensions < 0) ASN__ENCODE_FAILED;
+ if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) {
+ ASN__ENCODE_FAILED;
+ }
+ }
+
+ /* Encode a presence bitmap */
+ for(i = 0; i < specs->roms_count; i++) {
+ asn_TYPE_member_t *elm;
+ const void *memb_ptr; /* Pointer to the member */
+ const void *const *memb_ptr2; /* Pointer to that pointer */
+ int present;
+
+ edx = specs->oms[i];
+ elm = &td->elements[edx];
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 =
+ (const void *const *)((const char *)sptr + elm->memb_offset);
+ present = (*memb_ptr2 != 0);
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ memb_ptr2 = &memb_ptr;
+ present = 1;
+ }
+
+ /* Eliminate default values */
+ if(present && elm->default_value_cmp
+ && elm->default_value_cmp(*memb_ptr2) == 0)
+ present = 0;
+
+ ASN_DEBUG("Element %s %s %s->%s is %s",
+ elm->flags & ATF_POINTER ? "ptr" : "inline",
+ elm->default_value_cmp ? "def" : "wtv",
+ td->name, elm->name, present ? "present" : "absent");
+ if(per_put_few_bits(po, present, 1))
+ ASN__ENCODE_FAILED;
+ }
+
+ /*
+ * Encode the sequence ROOT elements.
+ */
+ ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension,
+ td->elements_count);
+ for(edx = 0;
+ edx < ((specs->first_extension < 0) ? td->elements_count
+ : (size_t)specs->first_extension);
+ edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ const void *memb_ptr; /* Pointer to the member */
+ const void *const *memb_ptr2; /* Pointer to that pointer */
+
+ ASN_DEBUG("About to encode %s", elm->type->name);
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 =
+ (const void *const *)((const char *)sptr + elm->memb_offset);
+ if(!*memb_ptr2) {
+ ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present",
+ elm->name, edx);
+ if(elm->optional)
+ continue;
+ /* Mandatory element is missing */
+ ASN__ENCODE_FAILED;
+ }
+ } else {
+ memb_ptr = (const void *)((const char *)sptr + elm->memb_offset);
+ memb_ptr2 = &memb_ptr;
+ }
+
+ /* Eliminate default values */
+ if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0)
+ continue;
+
+ ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name);
+ er = elm->type->op->uper_encoder(
+ elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2,
+ po);
+ if(er.encoded == -1) return er;
+ }
+
+ /* No extensions to encode */
+ if(!n_extensions) ASN__ENCODED_OK(er);
+
+ ASN_DEBUG("Length of extensions %d bit-map", n_extensions);
+ /* #18.8. Write down the presence bit-map length. */
+ if(uper_put_nslength(po, n_extensions))
+ ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Bit-map of %d elements", n_extensions);
+ /* #18.7. Encoding the extensions presence bit-map. */
+ /* TODO: act upon NOTE in #18.7 for canonical PER */
+ if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions)
+ ASN__ENCODE_FAILED;
+
+ ASN_DEBUG("Writing %d extensions", n_extensions);
+ /* #18.9. Encode extensions as open type fields. */
+ if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions)
+ ASN__ENCODE_FAILED;
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics;
+ void *st = *sptr; /* Target structure. */
+ int extpresent; /* Extension additions are present */
+ uint8_t *opres; /* Presence of optional root members */
+ asn_per_data_t opmd;
+ asn_dec_rval_t rv;
+ size_t edx;
+
+ (void)constraints;
+
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ ASN__DECODE_FAILED;
+
+ if(!st) {
+ st = *sptr = CALLOC(1, specs->struct_size);
+ if(!st) ASN__DECODE_FAILED;
+ }
+
+ ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name);
+
+ /* Handle extensions */
+ if(specs->first_extension < 0) {
+ extpresent = 0;
+ } else {
+ extpresent = per_get_few_bits(pd, 1);
+ if(extpresent < 0) ASN__DECODE_STARVED;
+ }
+
+ /* Prepare a place and read-in the presence bitmap */
+ memset(&opmd, 0, sizeof(opmd));
+ if(specs->roms_count) {
+ opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1);
+ if(!opres) ASN__DECODE_FAILED;
+ /* Get the presence map */
+ if(per_get_many_bits(pd, opres, 0, specs->roms_count)) {
+ FREEMEM(opres);
+ ASN__DECODE_STARVED;
+ }
+ opmd.buffer = opres;
+ opmd.nbits = specs->roms_count;
+ ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)",
+ td->name, specs->roms_count, *opres);
+ } else {
+ opres = 0;
+ }
+
+ /*
+ * Get the sequence ROOT elements.
+ */
+ for(edx = 0; edx < td->elements_count; edx++) {
+ asn_TYPE_member_t *elm = &td->elements[edx];
+ void *memb_ptr; /* Pointer to the member */
+ void **memb_ptr2; /* Pointer to that pointer */
+#if 0
+ int padding;
+#endif
+
+ if(IN_EXTENSION_GROUP(specs, edx))
+ continue;
+
+ /* Fetch the pointer to this member */
+ if(elm->flags & ATF_POINTER) {
+ memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+ } else {
+ memb_ptr = (char *)st + elm->memb_offset;
+ memb_ptr2 = &memb_ptr;
+ }
+#if 0
+ /* Get Padding */
+ padding = (8 - (pd->moved % 8)) % 8;
+ if(padding > 0)
+ ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding);
+#if 0 /* old way of removing padding */
+ per_get_few_bits(pd, padding);
+#else /* Experimental fix proposed by @mhanna123 */
+ if(edx != (td->elements_count-1))
+ per_get_few_bits(pd, padding);
+ else {
+ if(specs->roms_count && (padding > 0))
+ ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count);
+ else
+ per_get_few_bits(pd, padding);
+ }
+#endif /* dealing with padding */
+#endif
+ /* Deal with optionality */
+ if(elm->optional) {
+ int present = per_get_few_bits(&opmd, 1);
+ ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)",
+ td->name, elm->name, present,
+ (int)opmd.nboff, (int)opmd.nbits);
+ if(present == 0) {
+ /* This element is not present */
+ if(elm->default_value_set) {
+ /* Fill-in DEFAULT */
+ if(elm->default_value_set(memb_ptr2)) {
+ FREEMEM(opres);
+ ASN__DECODE_FAILED;
+ }
+ ASN_DEBUG("Filled-in default");
+ }
+ /* The member is just not present */
+ continue;
+ }
+ /* Fall through */
+ }
+
+ /* Fetch the member from the stream */
+ ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name);
+
+ if(elm->flags & ATF_OPEN_TYPE) {
+ rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd);
+ } else {
+ rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr2, pd);
+ }
+ if(rv.code != RC_OK) {
+ ASN_DEBUG("Failed decode %s in %s",
+ elm->name, td->name);
+ FREEMEM(opres);
+ return rv;
+ }
+ }
+
+ /* Optionality map is not needed anymore */
+ FREEMEM(opres);
+
+ /*
+ * Deal with extensions.
+ */
+ if(extpresent) {
+ ssize_t bmlength;
+ uint8_t *epres; /* Presence of extension members */
+ asn_per_data_t epmd;
+
+ bmlength = 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;
+ 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) == 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 */
+
+ 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) == 0)
+ 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/src/asn/asn1c/constr_SEQUENCE.h b/src/asn/asn1c/constr_SEQUENCE.h
new file mode 100644
index 0000000..a22ed3a
--- /dev/null
+++ b/src/asn/asn1c/constr_SEQUENCE.h
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _CONSTR_SEQUENCE_H_
+#define _CONSTR_SEQUENCE_H_
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_SEQUENCE_specifics_s {
+ /*
+ * Target structure description.
+ */
+ unsigned struct_size; /* Size of the target structure. */
+ unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */
+
+ /*
+ * Tags to members mapping table (sorted).
+ */
+ const asn_TYPE_tag2member_t *tag2el;
+ unsigned tag2el_count;
+
+ /*
+ * Optional members of the extensions root (roms) or additions (aoms).
+ * Meaningful for PER.
+ */
+ const int *oms; /* Optional MemberS */
+ unsigned roms_count; /* Root optional members count */
+ unsigned aoms_count; /* Additions optional members count */
+
+ /*
+ * Description of an extensions group.
+ * Root components are clustered at the beginning of the structure,
+ * whereas extensions are clustered at the end. -1 means not extensible.
+ */
+ signed first_extension; /* First extension addition */
+} asn_SEQUENCE_specifics_t;
+
+
+/*
+ * A set specialized functions dealing with the SEQUENCE type.
+ */
+asn_struct_free_f SEQUENCE_free;
+asn_struct_print_f SEQUENCE_print;
+asn_struct_compare_f SEQUENCE_compare;
+asn_constr_check_f SEQUENCE_constraint;
+ber_type_decoder_f SEQUENCE_decode_ber;
+der_type_encoder_f SEQUENCE_encode_der;
+xer_type_decoder_f SEQUENCE_decode_xer;
+xer_type_encoder_f SEQUENCE_encode_xer;
+oer_type_decoder_f SEQUENCE_decode_oer;
+oer_type_encoder_f SEQUENCE_encode_oer;
+per_type_decoder_f SEQUENCE_decode_uper;
+per_type_encoder_f SEQUENCE_encode_uper;
+per_type_decoder_f SEQUENCE_decode_aper;
+per_type_encoder_f SEQUENCE_encode_aper;
+asn_random_fill_f SEQUENCE_random_fill;
+extern asn_TYPE_operation_t asn_OP_SEQUENCE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CONSTR_SEQUENCE_H_ */
diff --git a/src/asn/asn1c/constr_SEQUENCE_OF.c b/src/asn/asn1c/constr_SEQUENCE_OF.c
new file mode 100644
index 0000000..2a500c3
--- /dev/null
+++ b/src/asn/asn1c/constr_SEQUENCE_OF.c
@@ -0,0 +1,358 @@
+/*-
+ * Copyright (c) 2003, 2004, 2006 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * The DER encoder of the SEQUENCE OF type.
+ */
+asn_enc_rval_t
+SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr,
+ int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_TYPE_member_t *elm = td->elements;
+ const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr);
+ size_t computed_size = 0;
+ ssize_t encoding_size = 0;
+ asn_enc_rval_t erval;
+ int edx;
+
+ ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name);
+
+ /*
+ * Gather the length of the underlying members sequence.
+ */
+ for(edx = 0; edx < list->count; edx++) {
+ void *memb_ptr = list->array[edx];
+ if(!memb_ptr) continue;
+ erval = elm->type->op->der_encoder(elm->type, memb_ptr,
+ 0, elm->tag,
+ 0, 0);
+ if(erval.encoded == -1)
+ return erval;
+ computed_size += erval.encoded;
+ }
+
+ /*
+ * Encode the TLV for the sequence itself.
+ */
+ encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag,
+ cb, app_key);
+ if(encoding_size == -1) {
+ erval.encoded = -1;
+ erval.failed_type = td;
+ erval.structure_ptr = ptr;
+ return erval;
+ }
+
+ computed_size += encoding_size;
+ if(!cb) {
+ erval.encoded = computed_size;
+ ASN__ENCODED_OK(erval);
+ }
+
+ ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name);
+
+ /*
+ * Encode all members.
+ */
+ for(edx = 0; edx < list->count; edx++) {
+ void *memb_ptr = list->array[edx];
+ if(!memb_ptr) continue;
+ erval = elm->type->op->der_encoder(elm->type, memb_ptr,
+ 0, elm->tag,
+ cb, app_key);
+ if(erval.encoded == -1)
+ return erval;
+ encoding_size += erval.encoded;
+ }
+
+ if(computed_size != (size_t)encoding_size) {
+ /*
+ * Encoded size is not equal to the computed size.
+ */
+ erval.encoded = -1;
+ erval.failed_type = td;
+ erval.structure_ptr = ptr;
+ } else {
+ erval.encoded = computed_size;
+ erval.structure_ptr = 0;
+ erval.failed_type = 0;
+ }
+
+ return erval;
+}
+
+asn_enc_rval_t
+SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_enc_rval_t er;
+ const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elm = td->elements;
+ const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr);
+ const char *mname = specs->as_XMLValueList
+ ? 0
+ : ((*elm->name) ? elm->name : elm->type->xml_tag);
+ size_t mlen = mname ? strlen(mname) : 0;
+ int xcan = (flags & XER_F_CANONICAL);
+ int i;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ er.encoded = 0;
+
+ for(i = 0; i < list->count; i++) {
+ asn_enc_rval_t tmper;
+ void *memb_ptr = list->array[i];
+ if(!memb_ptr) continue;
+
+ if(mname) {
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel);
+ ASN__CALLBACK3("<", 1, mname, mlen, ">", 1);
+ }
+
+ tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1,
+ flags, cb, app_key);
+ if(tmper.encoded == -1) return tmper;
+ er.encoded += tmper.encoded;
+ if(tmper.encoded == 0 && specs->as_XMLValueList) {
+ const char *name = elm->type->xml_tag;
+ size_t len = strlen(name);
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1);
+ ASN__CALLBACK3("<", 1, name, len, "/>", 2);
+ }
+
+ if(mname) {
+ ASN__CALLBACK3("", 2, mname, mlen, ">", 1);
+ }
+ }
+
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);
+
+ ASN__ENCODED_OK(er);
+cb_failed:
+ ASN__ENCODE_FAILED;
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_enc_rval_t
+SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_anonymous_sequence_ *list;
+ const asn_per_constraint_t *ct;
+ asn_enc_rval_t er;
+ const asn_TYPE_member_t *elm = td->elements;
+ size_t encoded_edx;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+ list = _A_CSEQUENCE_FROM_VOID(sptr);
+
+ er.encoded = 0;
+
+ ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count);
+
+ if(constraints) ct = &constraints->size;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->size;
+ else ct = 0;
+
+ /* If extensible constraint, check if size is in root */
+ if(ct) {
+ int not_in_root =
+ (list->count < ct->lower_bound || list->count > ct->upper_bound);
+ ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound,
+ ct->flags & APC_EXTENSIBLE ? "ext" : "fix");
+ if(ct->flags & APC_EXTENSIBLE) {
+ /* Declare whether size is in extension root */
+ if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED;
+ if(not_in_root) ct = 0;
+ } else if(not_in_root && ct->effective_bits >= 0) {
+ ASN__ENCODE_FAILED;
+ }
+
+ }
+
+ if(ct && ct->effective_bits >= 0) {
+ /* X.691, #19.5: No length determinant */
+ if(per_put_few_bits(po, list->count - ct->lower_bound,
+ ct->effective_bits))
+ ASN__ENCODE_FAILED;
+ } else if(list->count == 0) {
+ /* When the list is empty add only the length determinant
+ * X.691, #20.6 and #11.9.4.1
+ */
+ if (uper_put_length(po, 0, 0)) {
+ ASN__ENCODE_FAILED;
+ }
+ ASN__ENCODED_OK(er);
+ }
+
+ for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) {
+ ssize_t may_encode;
+ size_t edx;
+ int need_eom = 0;
+
+ if(ct && ct->effective_bits >= 0) {
+ may_encode = list->count;
+ } else {
+ may_encode =
+ uper_put_length(po, list->count - encoded_edx, &need_eom);
+ if(may_encode < 0) ASN__ENCODE_FAILED;
+ }
+
+ for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) {
+ void *memb_ptr = list->array[edx];
+ if(!memb_ptr) ASN__ENCODE_FAILED;
+ er = elm->type->op->uper_encoder(
+ elm->type, elm->encoding_constraints.per_constraints, memb_ptr,
+ po);
+ if(er.encoded == -1) ASN__ENCODE_FAILED;
+ }
+
+ if(need_eom && uper_put_length(po, 0, 0))
+ ASN__ENCODE_FAILED; /* End of Message length */
+
+ encoded_edx += may_encode;
+ }
+
+ ASN__ENCODED_OK(er);
+}
+
+asn_enc_rval_t
+SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints,
+ const void *sptr, asn_per_outp_t *po) {
+ const asn_anonymous_sequence_ *list;
+ const asn_per_constraint_t *ct;
+ asn_enc_rval_t er;
+ asn_TYPE_member_t *elm = td->elements;
+ int seq;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+ list = _A_CSEQUENCE_FROM_VOID(sptr);
+
+ er.encoded = 0;
+
+ ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count);
+
+ if(constraints) ct = &constraints->size;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->size;
+ else ct = 0;
+
+ /* If extensible constraint, check if size is in root */
+ if(ct) {
+ int not_in_root = (list->count < ct->lower_bound
+ || list->count > ct->upper_bound);
+ ASN_DEBUG("lb %ld ub %ld %s",
+ ct->lower_bound, ct->upper_bound,
+ ct->flags & APC_EXTENSIBLE ? "ext" : "fix");
+ if(ct->flags & APC_EXTENSIBLE) {
+ /* Declare whether size is in extension root */
+ if(per_put_few_bits(po, not_in_root, 1))
+ ASN__ENCODE_FAILED;
+ if(not_in_root) ct = 0;
+ } else if(not_in_root && ct->effective_bits >= 0)
+ ASN__ENCODE_FAILED;
+ }
+
+ if(ct && ct->effective_bits >= 0) {
+ /* X.691, #19.5: No length determinant */
+/* if(per_put_few_bits(po, list->count - ct->lower_bound,
+ ct->effective_bits))
+ ASN__ENCODE_FAILED;
+*/
+ if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0)
+ ASN__ENCODE_FAILED;
+ }
+
+ for(seq = -1; seq < list->count;) {
+ ssize_t mayEncode;
+ if(seq < 0) seq = 0;
+ if(ct && ct->effective_bits >= 0) {
+ mayEncode = list->count;
+ } else {
+ mayEncode = aper_put_length(po, -1, list->count - seq);
+ if(mayEncode < 0) ASN__ENCODE_FAILED;
+ }
+
+ while(mayEncode--) {
+ void *memb_ptr = list->array[seq++];
+ if(!memb_ptr) ASN__ENCODE_FAILED;
+ er = elm->type->op->aper_encoder(elm->type,
+ elm->encoding_constraints.per_constraints, memb_ptr, po);
+ if(er.encoded == -1)
+ ASN__ENCODE_FAILED;
+ }
+ }
+
+ ASN__ENCODED_OK(er);
+}
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+int
+SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+ const void *bptr) {
+ const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr);
+ const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr);
+ ssize_t idx;
+
+ if(a && b) {
+ ssize_t common_length = (a->count < b->count ? a->count : b->count);
+ for(idx = 0; idx < common_length; idx++) {
+ int ret = td->elements->type->op->compare_struct(
+ td->elements->type, a->array[idx], b->array[idx]);
+ if(ret) return ret;
+ }
+
+ if(idx < b->count) /* more elements in b */
+ return -1; /* a is shorter, so put it first */
+ if(idx < a->count) return 1;
+
+ } else if(!a) {
+ return -1;
+ } else if(!b) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+asn_TYPE_operation_t asn_OP_SEQUENCE_OF = {
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_compare,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+ 0,
+ 0,
+#else
+ SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */
+ SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */
+#endif /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+ 0,
+ 0,
+ 0,
+ 0,
+#else
+ SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+ SEQUENCE_OF_random_fill,
+ 0 /* Use generic outmost tag fetcher */
+};
+
diff --git a/src/asn/asn1c/constr_SEQUENCE_OF.h b/src/asn/asn1c/constr_SEQUENCE_OF.h
new file mode 100644
index 0000000..6857f0f
--- /dev/null
+++ b/src/asn/asn1c/constr_SEQUENCE_OF.h
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _CONSTR_SEQUENCE_OF_H_
+#define _CONSTR_SEQUENCE_OF_H_
+
+#include
+#include /* Implemented using SET OF */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * A set specialized functions dealing with the SEQUENCE OF type.
+ * Generally implemented using SET OF.
+ */
+asn_struct_compare_f SEQUENCE_OF_compare;
+der_type_encoder_f SEQUENCE_OF_encode_der;
+xer_type_encoder_f SEQUENCE_OF_encode_xer;
+per_type_encoder_f SEQUENCE_OF_encode_uper;
+per_type_encoder_f SEQUENCE_OF_encode_aper;
+extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF;
+
+#define SEQUENCE_OF_free SET_OF_free
+#define SEQUENCE_OF_print SET_OF_print
+#define SEQUENCE_OF_constraint SET_OF_constraint
+#define SEQUENCE_OF_decode_ber SET_OF_decode_ber
+#define SEQUENCE_OF_decode_xer SET_OF_decode_xer
+#define SEQUENCE_OF_decode_oer SET_OF_decode_oer
+#define SEQUENCE_OF_encode_oer SET_OF_encode_oer
+#define SEQUENCE_OF_decode_uper SET_OF_decode_uper
+#define SEQUENCE_OF_decode_aper SET_OF_decode_aper
+#define SEQUENCE_OF_random_fill SET_OF_random_fill
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CONSTR_SET_OF_H_ */
diff --git a/src/asn/asn1c/constr_SET_OF.c b/src/asn/asn1c/constr_SET_OF.c
new file mode 100644
index 0000000..ab51d38
--- /dev/null
+++ b/src/asn/asn1c/constr_SET_OF.c
@@ -0,0 +1,1441 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin .
+ * All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * Number of bytes left for this structure.
+ * (ctx->left) indicates the number of bytes _transferred_ for the structure.
+ * (size) contains the number of bytes in the buffer passed.
+ */
+#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left)
+
+/*
+ * If the subprocessor function returns with an indication that it wants
+ * more data, it may well be a fatal decoding problem, because the
+ * size is constrained by the 's L, even if the buffer size allows
+ * reading more data.
+ * For example, consider the buffer containing the following TLVs:
+ * ...
+ * The TLV length clearly indicates that one byte is expected in V, but
+ * if the V processor returns with "want more data" even if the buffer
+ * contains way more data than the V processor have seen.
+ */
+#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size)
+
+/*
+ * This macro "eats" the part of the buffer which is definitely "consumed",
+ * i.e. was correctly converted into local representation or rightfully skipped.
+ */
+#undef ADVANCE
+#define ADVANCE(num_bytes) do { \
+ size_t num = num_bytes; \
+ ptr = ((const char *)ptr) + num;\
+ size -= num; \
+ if(ctx->left >= 0) \
+ ctx->left -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+/*
+ * Switch to the next phase of parsing.
+ */
+#undef NEXT_PHASE
+#undef PHASE_OUT
+#define NEXT_PHASE(ctx) do { \
+ ctx->phase++; \
+ ctx->step = 0; \
+ } while(0)
+#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0)
+
+/*
+ * Return a standardized complex structure.
+ */
+#undef RETURN
+#define RETURN(_code) do { \
+ rval.code = _code; \
+ rval.consumed = consumed_myself;\
+ return rval; \
+ } while(0)
+
+/*
+ * The decoder of the SET OF type.
+ */
+asn_dec_rval_t
+SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **struct_ptr,
+ const void *ptr, size_t size, int tag_mode) {
+ /*
+ * Bring closer parts of structure description.
+ */
+ const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elm = td->elements; /* Single one */
+
+ /*
+ * Parts of the structure being constructed.
+ */
+ void *st = *struct_ptr; /* Target structure. */
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ ber_tlv_tag_t tlv_tag; /* T from TLV */
+ asn_dec_rval_t rval; /* Return code from subparsers */
+
+ ssize_t consumed_myself = 0; /* Consumed bytes from ptr */
+
+ ASN_DEBUG("Decoding %s as SET OF", td->name);
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(st == 0) {
+ st = *struct_ptr = CALLOC(1, specs->struct_size);
+ if(st == 0) {
+ RETURN(RC_FAIL);
+ }
+ }
+
+ /*
+ * Restore parsing context.
+ */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+ /*
+ * Start to parse where left previously
+ */
+ switch(ctx->phase) {
+ case 0:
+ /*
+ * PHASE 0.
+ * Check that the set of tags associated with given structure
+ * perfectly fits our expectations.
+ */
+
+ rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size,
+ tag_mode, 1, &ctx->left, 0);
+ if(rval.code != RC_OK) {
+ ASN_DEBUG("%s tagging check failed: %d",
+ td->name, rval.code);
+ return rval;
+ }
+
+ if(ctx->left >= 0)
+ ctx->left += rval.consumed; /* ?Substracted below! */
+ ADVANCE(rval.consumed);
+
+ ASN_DEBUG("Structure consumes %ld bytes, "
+ "buffer %ld", (long)ctx->left, (long)size);
+
+ NEXT_PHASE(ctx);
+ /* Fall through */
+ case 1:
+ /*
+ * PHASE 1.
+ * From the place where we've left it previously,
+ * try to decode the next item.
+ */
+ for(;; ctx->step = 0) {
+ ssize_t tag_len; /* Length of TLV's T */
+
+ if(ctx->step & 1)
+ goto microphase2;
+
+ /*
+ * MICROPHASE 1: Synchronize decoding.
+ */
+
+ if(ctx->left == 0) {
+ ASN_DEBUG("End of SET OF %s", td->name);
+ /*
+ * No more things to decode.
+ * Exit out of here.
+ */
+ PHASE_OUT(ctx);
+ RETURN(RC_OK);
+ }
+
+ /*
+ * Fetch the T from TLV.
+ */
+ tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag);
+ switch(tag_len) {
+ case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
+ /* Fall through */
+ case -1: RETURN(RC_FAIL);
+ }
+
+ if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
+ if(LEFT < 2) {
+ if(SIZE_VIOLATION)
+ RETURN(RC_FAIL);
+ else
+ RETURN(RC_WMORE);
+ } else if(((const uint8_t *)ptr)[1] == 0) {
+ /*
+ * Found the terminator of the
+ * indefinite length structure.
+ */
+ break;
+ }
+ }
+
+ /* Outmost tag may be unknown and cannot be fetched/compared */
+ if(elm->tag != (ber_tlv_tag_t)-1) {
+ if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) {
+ /*
+ * The new list member of expected type has arrived.
+ */
+ } else {
+ ASN_DEBUG("Unexpected tag %s fixed SET OF %s",
+ ber_tlv_tag_string(tlv_tag), td->name);
+ ASN_DEBUG("%s SET OF has tag %s",
+ td->name, ber_tlv_tag_string(elm->tag));
+ RETURN(RC_FAIL);
+ }
+ }
+
+ /*
+ * MICROPHASE 2: Invoke the member-specific decoder.
+ */
+ ctx->step |= 1; /* Confirm entering next microphase */
+ microphase2:
+
+ /*
+ * Invoke the member fetch routine according to member's type
+ */
+ rval = elm->type->op->ber_decoder(opt_codec_ctx,
+ elm->type, &ctx->ptr, ptr, LEFT, 0);
+ ASN_DEBUG("In %s SET OF %s code %d consumed %d",
+ td->name, elm->type->name,
+ rval.code, (int)rval.consumed);
+ switch(rval.code) {
+ case RC_OK:
+ {
+ asn_anonymous_set_ *list = _A_SET_FROM_VOID(st);
+ if(ASN_SET_ADD(list, ctx->ptr) != 0)
+ RETURN(RC_FAIL);
+ else
+ ctx->ptr = 0;
+ }
+ break;
+ case RC_WMORE: /* More data expected */
+ if(!SIZE_VIOLATION) {
+ ADVANCE(rval.consumed);
+ RETURN(RC_WMORE);
+ }
+ /* Fall through */
+ case RC_FAIL: /* Fatal error */
+ ASN_STRUCT_FREE(*elm->type, ctx->ptr);
+ ctx->ptr = 0;
+ RETURN(RC_FAIL);
+ } /* switch(rval) */
+
+ ADVANCE(rval.consumed);
+ } /* for(all list members) */
+
+ NEXT_PHASE(ctx);
+ case 2:
+ /*
+ * Read in all "end of content" TLVs.
+ */
+ while(ctx->left < 0) {
+ if(LEFT < 2) {
+ if(LEFT > 0 && ((const char *)ptr)[0] != 0) {
+ /* Unexpected tag */
+ RETURN(RC_FAIL);
+ } else {
+ RETURN(RC_WMORE);
+ }
+ }
+ if(((const char *)ptr)[0] == 0
+ && ((const char *)ptr)[1] == 0) {
+ ADVANCE(2);
+ ctx->left++;
+ } else {
+ RETURN(RC_FAIL);
+ }
+ }
+
+ PHASE_OUT(ctx);
+ }
+
+ RETURN(RC_OK);
+}
+
+/*
+ * Internally visible buffer holding a single encoded element.
+ */
+struct _el_buffer {
+ uint8_t *buf;
+ size_t length;
+ size_t allocated_size;
+ unsigned bits_unused;
+};
+/* Append bytes to the above structure */
+static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) {
+ struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr;
+
+ if(el_buf->length + size > el_buf->allocated_size) {
+ size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8;
+ void *p;
+
+ do {
+ new_size <<= 2;
+ } while(el_buf->length + size > new_size);
+
+ p = REALLOC(el_buf->buf, new_size);
+ if(p) {
+ el_buf->buf = p;
+ el_buf->allocated_size = new_size;
+ } else {
+ return -1;
+ }
+ }
+
+ memcpy(el_buf->buf + el_buf->length, buffer, size);
+
+ el_buf->length += size;
+ return 0;
+}
+
+static void assert_unused_bits(const struct _el_buffer* p) {
+ if(p->length) {
+ assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0);
+ } else {
+ assert(p->bits_unused == 0);
+ }
+}
+
+static int _el_buf_cmp(const void *ap, const void *bp) {
+ const struct _el_buffer *a = (const struct _el_buffer *)ap;
+ const struct _el_buffer *b = (const struct _el_buffer *)bp;
+ size_t common_len;
+ int ret = 0;
+
+ if(a->length < b->length)
+ common_len = a->length;
+ else
+ common_len = b->length;
+
+ if (a->buf && b->buf) {
+ ret = memcmp(a->buf, b->buf, common_len);
+ }
+ if(ret == 0) {
+ if(a->length < b->length)
+ ret = -1;
+ else if(a->length > b->length)
+ ret = 1;
+ /* Ignore unused bits. */
+ assert_unused_bits(a);
+ assert_unused_bits(b);
+ }
+
+ return ret;
+}
+
+static void
+SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) {
+ size_t i;
+
+ for(i = 0; i < count; i++) {
+ FREEMEM(el_buf[i].buf);
+ }
+
+ FREEMEM(el_buf);
+}
+
+enum SET_OF__encode_method {
+ SOES_DER, /* Distinguished Encoding Rules */
+ SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */
+};
+
+static struct _el_buffer *
+SET_OF__encode_sorted(const asn_TYPE_member_t *elm,
+ const asn_anonymous_set_ *list,
+ enum SET_OF__encode_method method) {
+ struct _el_buffer *encoded_els;
+ int edx;
+
+ encoded_els =
+ (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0]));
+ if(encoded_els == NULL) {
+ return NULL;
+ }
+
+ /*
+ * Encode all members.
+ */
+ for(edx = 0; edx < list->count; edx++) {
+ const void *memb_ptr = list->array[edx];
+ struct _el_buffer *encoding_el = &encoded_els[edx];
+ asn_enc_rval_t erval;
+
+ if(!memb_ptr) break;
+
+ /*
+ * Encode the member into the prepared space.
+ */
+ switch(method) {
+ case SOES_DER:
+ erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag,
+ _el_addbytes, encoding_el);
+ break;
+ case SOES_CUPER:
+ erval = uper_encode(elm->type,
+ elm->encoding_constraints.per_constraints,
+ memb_ptr, _el_addbytes, encoding_el);
+ if(erval.encoded != -1) {
+ size_t extra_bits = erval.encoded % 8;
+ assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8);
+ encoding_el->bits_unused = (8 - extra_bits) & 0x7;
+ }
+ break;
+ default:
+ assert(!"Unreachable");
+ break;
+ }
+ if(erval.encoded < 0) break;
+ }
+
+ if(edx == list->count) {
+ /*
+ * Sort the encoded elements according to their encoding.
+ */
+ qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp);
+
+ return encoded_els;
+ } else {
+ SET_OF__encode_sorted_free(encoded_els, edx);
+ return NULL;
+ }
+}
+
+
+/*
+ * The DER encoder of the SET OF type.
+ */
+asn_enc_rval_t
+SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+ int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ const asn_TYPE_member_t *elm = td->elements;
+ const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr);
+ size_t computed_size = 0;
+ ssize_t encoding_size = 0;
+ struct _el_buffer *encoded_els;
+ int edx;
+
+ ASN_DEBUG("Estimating size for SET OF %s", td->name);
+
+ /*
+ * Gather the length of the underlying members sequence.
+ */
+ for(edx = 0; edx < list->count; edx++) {
+ void *memb_ptr = list->array[edx];
+ asn_enc_rval_t erval;
+
+ if(!memb_ptr) ASN__ENCODE_FAILED;
+
+ erval =
+ elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0);
+ if(erval.encoded == -1) return erval;
+ computed_size += erval.encoded;
+ }
+
+
+ /*
+ * Encode the TLV for the sequence itself.
+ */
+ encoding_size =
+ der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key);
+ if(encoding_size < 0) {
+ ASN__ENCODE_FAILED;
+ }
+ computed_size += encoding_size;
+
+ if(!cb || list->count == 0) {
+ asn_enc_rval_t erval;
+ erval.encoded = computed_size;
+ ASN__ENCODED_OK(erval);
+ }
+
+ ASN_DEBUG("Encoding members of %s SET OF", td->name);
+
+ /*
+ * DER mandates dynamic sorting of the SET OF elements
+ * according to their encodings. Build an array of the
+ * encoded elements.
+ */
+ encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER);
+
+ /*
+ * Report encoded elements to the application.
+ * Dispose of temporary sorted members table.
+ */
+ for(edx = 0; edx < list->count; edx++) {
+ struct _el_buffer *encoded_el = &encoded_els[edx];
+ /* Report encoded chunks to the application */
+ if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) {
+ break;
+ } else {
+ encoding_size += encoded_el->length;
+ }
+ }
+
+ SET_OF__encode_sorted_free(encoded_els, list->count);
+
+ if(edx == list->count) {
+ asn_enc_rval_t erval;
+ assert(computed_size == (size_t)encoding_size);
+ erval.encoded = computed_size;
+ ASN__ENCODED_OK(erval);
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+}
+
+#undef XER_ADVANCE
+#define XER_ADVANCE(num_bytes) do { \
+ size_t num = num_bytes; \
+ buf_ptr = ((const char *)buf_ptr) + num;\
+ size -= num; \
+ consumed_myself += num; \
+ } while(0)
+
+/*
+ * Decode the XER (XML) data.
+ */
+asn_dec_rval_t
+SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td, void **struct_ptr,
+ const char *opt_mname, const void *buf_ptr, size_t size) {
+ /*
+ * Bring closer parts of structure description.
+ */
+ const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *element = td->elements;
+ const char *elm_tag;
+ const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
+
+ /*
+ * ... and parts of the structure being constructed.
+ */
+ void *st = *struct_ptr; /* Target structure. */
+ asn_struct_ctx_t *ctx; /* Decoder context */
+
+ asn_dec_rval_t rval; /* Return value from a decoder */
+ ssize_t consumed_myself = 0; /* Consumed bytes from ptr */
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(st == 0) {
+ st = *struct_ptr = CALLOC(1, specs->struct_size);
+ if(st == 0) RETURN(RC_FAIL);
+ }
+
+ /* Which tag is expected for the downstream */
+ if(specs->as_XMLValueList) {
+ elm_tag = (specs->as_XMLValueList == 1) ? 0 : "";
+ } else {
+ elm_tag = (*element->name)
+ ? element->name : element->type->xml_tag;
+ }
+
+ /*
+ * Restore parsing context.
+ */
+ ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
+
+ /*
+ * Phases of XER/XML processing:
+ * Phase 0: Check that the opening tag matches our expectations.
+ * Phase 1: Processing body and reacting on closing tag.
+ * Phase 2: Processing inner type.
+ */
+ for(; ctx->phase <= 2;) {
+ pxer_chunk_type_e ch_type; /* XER chunk type */
+ ssize_t ch_size; /* Chunk size */
+ xer_check_tag_e tcv; /* Tag check value */
+
+ /*
+ * Go inside the inner member of a set.
+ */
+ if(ctx->phase == 2) {
+ asn_dec_rval_t tmprval;
+
+ /* Invoke the inner type decoder, m.b. multiple times */
+ ASN_DEBUG("XER/SET OF element [%s]", elm_tag);
+ tmprval = element->type->op->xer_decoder(opt_codec_ctx,
+ element->type, &ctx->ptr, elm_tag,
+ buf_ptr, size);
+ if(tmprval.code == RC_OK) {
+ asn_anonymous_set_ *list = _A_SET_FROM_VOID(st);
+ if(ASN_SET_ADD(list, ctx->ptr) != 0)
+ RETURN(RC_FAIL);
+ ctx->ptr = 0;
+ XER_ADVANCE(tmprval.consumed);
+ } else {
+ XER_ADVANCE(tmprval.consumed);
+ RETURN(tmprval.code);
+ }
+ ctx->phase = 1; /* Back to body processing */
+ ASN_DEBUG("XER/SET OF phase => %d", ctx->phase);
+ /* Fall through */
+ }
+
+ /*
+ * Get the next part of the XML stream.
+ */
+ ch_size = xer_next_token(&ctx->context,
+ buf_ptr, size, &ch_type);
+ if(ch_size == -1) {
+ RETURN(RC_FAIL);
+ } else {
+ switch(ch_type) {
+ case PXER_WMORE:
+ RETURN(RC_WMORE);
+ case PXER_COMMENT: /* Got XML comment */
+ case PXER_TEXT: /* Ignore free-standing text */
+ XER_ADVANCE(ch_size); /* Skip silently */
+ continue;
+ case PXER_TAG:
+ break; /* Check the rest down there */
+ }
+ }
+
+ tcv = xer_check_tag(buf_ptr, ch_size, xml_tag);
+ ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s",
+ tcv, ctx->phase, xml_tag);
+ switch(tcv) {
+ case XCT_CLOSING:
+ if(ctx->phase == 0) break;
+ ctx->phase = 0;
+ /* Fall through */
+ case XCT_BOTH:
+ if(ctx->phase == 0) {
+ /* No more things to decode */
+ XER_ADVANCE(ch_size);
+ ctx->phase = 3; /* Phase out */
+ RETURN(RC_OK);
+ }
+ /* Fall through */
+ case XCT_OPENING:
+ if(ctx->phase == 0) {
+ XER_ADVANCE(ch_size);
+ ctx->phase = 1; /* Processing body phase */
+ continue;
+ }
+ /* Fall through */
+ case XCT_UNKNOWN_OP:
+ case XCT_UNKNOWN_BO:
+
+ ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase);
+ if(ctx->phase == 1) {
+ /*
+ * Process a single possible member.
+ */
+ ctx->phase = 2;
+ continue;
+ }
+ /* Fall through */
+ default:
+ break;
+ }
+
+ ASN_DEBUG("Unexpected XML tag in SET OF");
+ break;
+ }
+
+ ctx->phase = 3; /* "Phase out" on hard failure */
+ RETURN(RC_FAIL);
+}
+
+
+
+typedef struct xer_tmp_enc_s {
+ void *buffer;
+ size_t offset;
+ size_t size;
+} xer_tmp_enc_t;
+static int
+SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) {
+ xer_tmp_enc_t *t = (xer_tmp_enc_t *)key;
+ if(t->offset + size >= t->size) {
+ size_t newsize = (t->size << 2) + size;
+ void *p = REALLOC(t->buffer, newsize);
+ if(!p) return -1;
+ t->buffer = p;
+ t->size = newsize;
+ }
+ memcpy((char *)t->buffer + t->offset, buffer, size);
+ t->offset += size;
+ return 0;
+}
+static int
+SET_OF_xer_order(const void *aptr, const void *bptr) {
+ const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr;
+ const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr;
+ size_t minlen = a->offset;
+ int ret;
+ if(b->offset < minlen) minlen = b->offset;
+ /* Well-formed UTF-8 has this nice lexicographical property... */
+ ret = memcmp(a->buffer, b->buffer, minlen);
+ if(ret != 0) return ret;
+ if(a->offset == b->offset)
+ return 0;
+ if(a->offset == minlen)
+ return -1;
+ return 1;
+}
+
+
+asn_enc_rval_t
+SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+ void *app_key) {
+ asn_enc_rval_t er;
+ const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elm = td->elements;
+ const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr);
+ const char *mname = specs->as_XMLValueList
+ ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag);
+ size_t mlen = mname ? strlen(mname) : 0;
+ int xcan = (flags & XER_F_CANONICAL);
+ xer_tmp_enc_t *encs = 0;
+ size_t encs_count = 0;
+ void *original_app_key = app_key;
+ asn_app_consume_bytes_f *original_cb = cb;
+ int i;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ if(xcan) {
+ encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0]));
+ if(!encs) ASN__ENCODE_FAILED;
+ cb = SET_OF_encode_xer_callback;
+ }
+
+ er.encoded = 0;
+
+ for(i = 0; i < list->count; i++) {
+ asn_enc_rval_t tmper;
+
+ void *memb_ptr = list->array[i];
+ if(!memb_ptr) continue;
+
+ if(encs) {
+ memset(&encs[encs_count], 0, sizeof(encs[0]));
+ app_key = &encs[encs_count];
+ encs_count++;
+ }
+
+ if(mname) {
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel);
+ ASN__CALLBACK3("<", 1, mname, mlen, ">", 1);
+ }
+
+ if(!xcan && specs->as_XMLValueList == 1)
+ ASN__TEXT_INDENT(1, ilevel + 1);
+ tmper = elm->type->op->xer_encoder(elm->type, memb_ptr,
+ ilevel + (specs->as_XMLValueList != 2),
+ flags, cb, app_key);
+ if(tmper.encoded == -1) return tmper;
+ er.encoded += tmper.encoded;
+ if(tmper.encoded == 0 && specs->as_XMLValueList) {
+ const char *name = elm->type->xml_tag;
+ size_t len = strlen(name);
+ ASN__CALLBACK3("<", 1, name, len, "/>", 2);
+ }
+
+ if(mname) {
+ ASN__CALLBACK3("", 2, mname, mlen, ">", 1);
+ }
+
+ }
+
+ if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);
+
+ if(encs) {
+ xer_tmp_enc_t *enc = encs;
+ xer_tmp_enc_t *end = encs + encs_count;
+ ssize_t control_size = 0;
+
+ er.encoded = 0;
+ cb = original_cb;
+ app_key = original_app_key;
+ qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order);
+
+ for(; enc < end; enc++) {
+ ASN__CALLBACK(enc->buffer, enc->offset);
+ FREEMEM(enc->buffer);
+ enc->buffer = 0;
+ control_size += enc->offset;
+ }
+ assert(control_size == er.encoded);
+ }
+
+ goto cleanup;
+cb_failed:
+ ASN__ENCODE_FAILED;
+cleanup:
+ if(encs) {
+ size_t n;
+ for(n = 0; n < encs_count; n++) {
+ FREEMEM(encs[n].buffer);
+ }
+ FREEMEM(encs);
+ }
+ ASN__ENCODED_OK(er);
+}
+
+int
+SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ asn_TYPE_member_t *elm = td->elements;
+ const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr);
+ int ret;
+ int i;
+
+ if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0;
+
+ /* Dump preamble */
+ if(cb(td->name, strlen(td->name), app_key) < 0
+ || cb(" ::= {", 6, app_key) < 0)
+ return -1;
+
+ for(i = 0; i < list->count; i++) {
+ const void *memb_ptr = list->array[i];
+ if(!memb_ptr) continue;
+
+ _i_INDENT(1);
+
+ ret = elm->type->op->print_struct(elm->type, memb_ptr,
+ ilevel + 1, cb, app_key);
+ if(ret) return ret;
+ }
+
+ ilevel--;
+ _i_INDENT(1);
+
+ return (cb("}", 1, app_key) < 0) ? -1 : 0;
+}
+
+void
+SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr,
+ enum asn_struct_free_method method) {
+ if(td && ptr) {
+ const asn_SET_OF_specifics_t *specs;
+ asn_TYPE_member_t *elm = td->elements;
+ asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr);
+ asn_struct_ctx_t *ctx; /* Decoder context */
+ int i;
+
+ /*
+ * Could not use set_of_empty() because of (*free)
+ * incompatibility.
+ */
+ for(i = 0; i < list->count; i++) {
+ void *memb_ptr = list->array[i];
+ if(memb_ptr)
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
+ }
+ list->count = 0; /* No meaningful elements left */
+
+ asn_set_empty(list); /* Remove (list->array) */
+
+ specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset);
+ if(ctx->ptr) {
+ ASN_STRUCT_FREE(*elm->type, ctx->ptr);
+ ctx->ptr = 0;
+ }
+
+ switch(method) {
+ case ASFM_FREE_EVERYTHING:
+ FREEMEM(ptr);
+ break;
+ case ASFM_FREE_UNDERLYING:
+ break;
+ case ASFM_FREE_UNDERLYING_AND_RESET:
+ memset(ptr, 0, specs->struct_size);
+ break;
+ }
+ }
+}
+
+int
+SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const asn_TYPE_member_t *elm = td->elements;
+ asn_constr_check_f *constr;
+ const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr);
+ int i;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ constr = elm->encoding_constraints.general_constraints;
+ if(!constr) constr = elm->type->encoding_constraints.general_constraints;
+
+ /*
+ * Iterate over the members of an array.
+ * Validate each in turn, until one fails.
+ */
+ for(i = 0; i < list->count; i++) {
+ const void *memb_ptr = list->array[i];
+ int ret;
+
+ if(!memb_ptr) continue;
+
+ ret = constr(elm->type, memb_ptr, ctfailcb, app_key);
+ if(ret) return ret;
+ }
+
+ return 0;
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr,
+ asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+ const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elm = td->elements; /* Single one */
+ void *st = *sptr;
+ asn_anonymous_set_ *list;
+ const asn_per_constraint_t *ct;
+ int repeat = 0;
+ ssize_t nelems;
+
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ ASN__DECODE_FAILED;
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(!st) {
+ st = *sptr = CALLOC(1, specs->struct_size);
+ if(!st) ASN__DECODE_FAILED;
+ }
+ list = _A_SET_FROM_VOID(st);
+
+ /* Figure out which constraints to use */
+ if(constraints) ct = &constraints->size;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->size;
+ else ct = 0;
+
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ int value = per_get_few_bits(pd, 1);
+ if(value < 0) ASN__DECODE_STARVED;
+ if(value) ct = 0; /* Not restricted! */
+ }
+
+ if(ct && ct->effective_bits >= 0) {
+ /* X.691, #19.5: No length determinant */
+ nelems = per_get_few_bits(pd, ct->effective_bits);
+ ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s",
+ (long)nelems, ct->lower_bound, td->name);
+ if(nelems < 0) ASN__DECODE_STARVED;
+ nelems += ct->lower_bound;
+ } else {
+ nelems = -1;
+ }
+
+ do {
+ int i;
+ if(nelems < 0) {
+ nelems = uper_get_length(pd, -1, 0, &repeat);
+ ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)",
+ nelems, (int)(ct ? ct->effective_bits : -1));
+ if(nelems < 0) ASN__DECODE_STARVED;
+ }
+
+ for(i = 0; i < nelems; i++) {
+ void *ptr = 0;
+ ASN_DEBUG("SET OF %s decoding", elm->type->name);
+ rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type,
+ elm->encoding_constraints.per_constraints, &ptr, pd);
+ ASN_DEBUG("%s SET OF %s decoded %d, %p",
+ td->name, elm->type->name, rv.code, ptr);
+ if(rv.code == RC_OK) {
+ if(ASN_SET_ADD(list, ptr) == 0) {
+ if(rv.consumed == 0 && nelems > 200) {
+ /* Protect from SET OF NULL compression bombs. */
+ ASN__DECODE_FAILED;
+ }
+ continue;
+ }
+ ASN_DEBUG("Failed to add element into %s",
+ td->name);
+ /* Fall through */
+ rv.code = RC_FAIL;
+ } else {
+ ASN_DEBUG("Failed decoding %s of %s (SET OF)",
+ elm->type->name, td->name);
+ }
+ if(ptr) ASN_STRUCT_FREE(*elm->type, ptr);
+ return rv;
+ }
+
+ nelems = -1; /* Allow uper_get_length() */
+ } while(repeat);
+
+ ASN_DEBUG("Decoded %s as SET OF", td->name);
+
+ rv.code = RC_OK;
+ rv.consumed = 0;
+ return rv;
+}
+
+asn_enc_rval_t
+SET_OF_encode_uper(const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, const void *sptr,
+ asn_per_outp_t *po) {
+ const asn_anonymous_set_ *list;
+ const asn_per_constraint_t *ct;
+ const asn_TYPE_member_t *elm = td->elements;
+ struct _el_buffer *encoded_els;
+ asn_enc_rval_t er;
+ size_t encoded_edx;
+
+ if(!sptr) ASN__ENCODE_FAILED;
+
+ list = _A_CSET_FROM_VOID(sptr);
+
+ er.encoded = 0;
+
+ ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count);
+
+ if(constraints) ct = &constraints->size;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->size;
+ else ct = 0;
+
+ /* If extensible constraint, check if size is in root */
+ if(ct) {
+ int not_in_root =
+ (list->count < ct->lower_bound || list->count > ct->upper_bound);
+ ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound,
+ ct->flags & APC_EXTENSIBLE ? "ext" : "fix");
+ if(ct->flags & APC_EXTENSIBLE) {
+ /* Declare whether size is in extension root */
+ if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED;
+ if(not_in_root) ct = 0;
+ } else if(not_in_root && ct->effective_bits >= 0) {
+ ASN__ENCODE_FAILED;
+ }
+
+ }
+
+ if(ct && ct->effective_bits >= 0) {
+ /* X.691, #19.5: No length determinant */
+ if(per_put_few_bits(po, list->count - ct->lower_bound,
+ ct->effective_bits))
+ ASN__ENCODE_FAILED;
+ } else if(list->count == 0) {
+ /* When the list is empty add only the length determinant
+ * X.691, #20.6 and #11.9.4.1
+ */
+ if (uper_put_length(po, 0, 0)) {
+ ASN__ENCODE_FAILED;
+ }
+ ASN__ENCODED_OK(er);
+ }
+
+
+ /*
+ * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements
+ * according to their encodings. Build an array of the encoded elements.
+ */
+ encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER);
+
+ for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) {
+ ssize_t may_encode;
+ size_t edx;
+ int need_eom = 0;
+
+ if(ct && ct->effective_bits >= 0) {
+ may_encode = list->count;
+ } else {
+ may_encode =
+ uper_put_length(po, list->count - encoded_edx, &need_eom);
+ if(may_encode < 0) ASN__ENCODE_FAILED;
+ }
+
+ for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) {
+ const struct _el_buffer *el = &encoded_els[edx];
+ if(asn_put_many_bits(po, el->buf,
+ (8 * el->length) - el->bits_unused) < 0) {
+ break;
+ }
+ }
+
+ if(need_eom && uper_put_length(po, 0, 0))
+ ASN__ENCODE_FAILED; /* End of Message length */
+
+ encoded_edx += may_encode;
+ }
+
+ SET_OF__encode_sorted_free(encoded_els, list->count);
+
+ if((ssize_t)encoded_edx == list->count) {
+ ASN__ENCODED_OK(er);
+ } else {
+ ASN__ENCODE_FAILED;
+ }
+}
+
+asn_dec_rval_t
+SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+ const asn_TYPE_descriptor_t *td,
+ const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+ asn_dec_rval_t rv;
+ const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
+ const asn_TYPE_member_t *elm = td->elements; /* Single one */
+ void *st = *sptr;
+ asn_anonymous_set_ *list;
+ const asn_per_constraint_t *ct;
+ int repeat = 0;
+ ssize_t nelems;
+
+ if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx))
+ ASN__DECODE_FAILED;
+
+ /*
+ * Create the target structure if it is not present already.
+ */
+ if(!st) {
+ st = *sptr = CALLOC(1, specs->struct_size);
+ if(!st) ASN__DECODE_FAILED;
+ }
+ list = _A_SET_FROM_VOID(st);
+
+ /* Figure out which constraints to use */
+ if(constraints) ct = &constraints->size;
+ else if(td->encoding_constraints.per_constraints)
+ ct = &td->encoding_constraints.per_constraints->size;
+ else ct = 0;
+
+ if(ct && ct->flags & APC_EXTENSIBLE) {
+ int value = per_get_few_bits(pd, 1);
+ if(value < 0) ASN__DECODE_STARVED;
+ if(value) ct = 0; /* Not restricted! */
+ }
+
+ if(ct && ct->effective_bits >= 0) {
+ /* X.691, #19.5: No length determinant */
+ nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 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/src/asn/asn1c/constr_SET_OF.h b/src/asn/asn1c/constr_SET_OF.h
new file mode 100644
index 0000000..7681062
--- /dev/null
+++ b/src/asn/asn1c/constr_SET_OF.h
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef CONSTR_SET_OF_H
+#define CONSTR_SET_OF_H
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_SET_OF_specifics_s {
+ /*
+ * Target structure description.
+ */
+ unsigned struct_size; /* Size of the target structure. */
+ unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */
+
+ /* XER-specific stuff */
+ int as_XMLValueList; /* The member type must be encoded like this */
+} asn_SET_OF_specifics_t;
+
+/*
+ * A set specialized functions dealing with the SET OF type.
+ */
+asn_struct_free_f SET_OF_free;
+asn_struct_print_f SET_OF_print;
+asn_struct_compare_f SET_OF_compare;
+asn_constr_check_f SET_OF_constraint;
+ber_type_decoder_f SET_OF_decode_ber;
+der_type_encoder_f SET_OF_encode_der;
+xer_type_decoder_f SET_OF_decode_xer;
+xer_type_encoder_f SET_OF_encode_xer;
+oer_type_decoder_f SET_OF_decode_oer;
+oer_type_encoder_f SET_OF_encode_oer;
+per_type_decoder_f SET_OF_decode_uper;
+per_type_encoder_f SET_OF_encode_uper;
+per_type_decoder_f SET_OF_decode_aper;
+per_type_encoder_f SET_OF_encode_aper;
+asn_random_fill_f SET_OF_random_fill;
+extern asn_TYPE_operation_t asn_OP_SET_OF;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CONSTR_SET_OF_H */
diff --git a/src/asn/asn1c/constr_TYPE.c b/src/asn/asn1c/constr_TYPE.c
new file mode 100644
index 0000000..aefaefd
--- /dev/null
+++ b/src/asn/asn1c/constr_TYPE.c
@@ -0,0 +1,80 @@
+/*-
+ * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include
+#include
+#include
+
+/*
+ * Version of the ASN.1 infrastructure shipped with compiler.
+ */
+int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; }
+
+static asn_app_consume_bytes_f _print2fp;
+
+/*
+ * Return the outmost tag of the type.
+ */
+ber_tlv_tag_t
+asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor,
+ const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) {
+
+ if(tag_mode)
+ return tag;
+
+ if(type_descriptor->tags_count)
+ return type_descriptor->tags[0];
+
+ return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0);
+}
+
+/*
+ * Print the target language's structure in human readable form.
+ */
+int
+asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td,
+ const void *struct_ptr) {
+ if(!stream) stream = stdout;
+ if(!td || !struct_ptr) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /* Invoke type-specific printer */
+ if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) {
+ return -1;
+ }
+
+ /* Terminate the output */
+ if(_print2fp("\n", 1, stream)) {
+ return -1;
+ }
+
+ return fflush(stream);
+}
+
+/* Dump the data into the specified stdio stream */
+static int
+_print2fp(const void *buffer, size_t size, void *app_key) {
+ FILE *stream = (FILE *)app_key;
+
+ if(fwrite(buffer, 1, size, stream) != size)
+ return -1;
+
+ return 0;
+}
+
+
+/*
+ * Some compilers do not support variable args macros.
+ * This function is a replacement of ASN_DEBUG() macro.
+ */
+void ASN_DEBUG_f(const char *fmt, ...);
+void ASN_DEBUG_f(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
diff --git a/src/asn/asn1c/constr_TYPE.h b/src/asn/asn1c/constr_TYPE.h
new file mode 100644
index 0000000..d80dea5
--- /dev/null
+++ b/src/asn/asn1c/constr_TYPE.h
@@ -0,0 +1,262 @@
+/*
+ * Copyright (c) 2003-2017 Lev Walkin . All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This file contains the declaration structure called "ASN.1 Type Definition",
+ * which holds all information necessary for encoding and decoding routines.
+ * This structure even contains pointer to these encoding and decoding routines
+ * for each defined ASN.1 type.
+ */
+#ifndef _CONSTR_TYPE_H_
+#define _CONSTR_TYPE_H_
+
+#include
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s; /* Forward declaration */
+struct asn_TYPE_member_s; /* Forward declaration */
+
+/*
+ * This type provides the context information for various ASN.1 routines,
+ * primarily ones doing decoding. A member _asn_ctx of this type must be
+ * included into certain target language's structures, such as compound types.
+ */
+typedef struct asn_struct_ctx_s {
+ short phase; /* Decoding phase */
+ short step; /* Elementary step of a phase */
+ int context; /* Other context information */
+ void *ptr; /* Decoder-specific stuff (stack elements) */
+ ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */
+} asn_struct_ctx_t;
+
+#include /* Basic Encoding Rules decoder */
+#include /* Distinguished Encoding Rules encoder */
+#include /* Decoder of XER (XML, text) */
+#include /* Encoder into XER (XML, text) */
+#include /* Packet Encoding Rules decoder */
+#include /* Packet Encoding Rules encoder */
+#include /* Subtype constraints support */
+#include /* Random structures support */
+
+#ifdef ASN_DISABLE_OER_SUPPORT
+typedef void (oer_type_decoder_f)(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/src/asn/asn1c/constraints.c b/src/asn/asn1c/constraints.c
new file mode 100644
index 0000000..df3c6c1
--- /dev/null
+++ b/src/asn/asn1c/constraints.c
@@ -0,0 +1,93 @@
+#include
+#include
+
+int
+asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor,
+ const void *struct_ptr,
+ asn_app_constraint_failed_f *cb, void *key) {
+ (void)type_descriptor; /* Unused argument */
+ (void)struct_ptr; /* Unused argument */
+ (void)cb; /* Unused argument */
+ (void)key; /* Unused argument */
+
+ /* Nothing to check */
+ return 0;
+}
+
+int
+asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor,
+ const void *struct_ptr,
+ asn_app_constraint_failed_f *cb, void *key) {
+ (void)type_descriptor; /* Unused argument */
+ (void)struct_ptr; /* Unused argument */
+ (void)cb; /* Unused argument */
+ (void)key; /* Unused argument */
+
+ /* Unknown how to check */
+ return 0;
+}
+
+struct errbufDesc {
+ const asn_TYPE_descriptor_t *failed_type;
+ const void *failed_struct_ptr;
+ char *errbuf;
+ size_t errlen;
+};
+
+static void
+_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr,
+ const char *fmt, ...) {
+ struct errbufDesc *arg = key;
+ va_list ap;
+ ssize_t vlen;
+ ssize_t maxlen;
+
+ arg->failed_type = td;
+ arg->failed_struct_ptr = sptr;
+
+ maxlen = arg->errlen;
+ if(maxlen <= 0)
+ return;
+
+ va_start(ap, fmt);
+ vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap);
+ va_end(ap);
+ if(vlen >= maxlen) {
+ arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */
+ arg->errlen = maxlen - 1; /* Not counting termination */
+ return;
+ } else if(vlen >= 0) {
+ arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */
+ arg->errlen = vlen; /* Not counting termination */
+ } else {
+ /*
+ * The libc on this system is broken.
+ */
+ vlen = sizeof("